<%@ Page Language="VB" ResponseEncoding="iso-8859-1" Inherits="AACPage" %> <%@ import Namespace="System.Data" %> <%@ import Namespace="System.Data.Oledb" %> <%@ import Namespace="System.Data.ODBC" %> <%@ Register TagPrefix="aac" TagName="header" Src="~/header.ascx" %> <%@ Register TagPrefix="aac" TagName="footer" Src="~/footer.ascx" %> <%@ Register TagPrefix="aac" TagName="telaioHeader" Src="~/service/include/telaio_header.ascx" %> <%@ Register TagPrefix="aac" TagName="telaioFooter" Src="~/service/include/telaio_footer.ascx" %> <%@ Register TagPrefix="aac" TagName="autoreFile" Src="~/service/include/autore_file.ascx" %> <%@ Register TagPrefix="aac" TagName="aggiornamenti" Src="~/service/include/aggiornamenti.ascx" %> <%@ Register TagPrefix="aac" TagName="ultimiPost" Src="~/forum/inc_ultimi_post.ascx" %> <%@ Register TagPrefix="aac" TagName="ultimiPost3" Src="~/forum/inc_ultimi_post_nuovo.ascx" %> <%@ Register TagPrefix="aac" TagName="aspect" Src="~/service/include/aspect.ascx" %> <%@ Register TagPrefix="aac" TagName="adsenseGenerator" Src="~/service/include/adsense_generator.ascx" %> <% 'Il controllo per il paging correntemente č registrato qua e lā, ma andrebbe 'eliminato da tutte le parti e messo qui '<'%@ Register TagPrefix="aac" TagName="paging" Src="~/service/include/paging.ascx" %'> %> ArcadiA Club - Imparare a usare Irrlicht <% sez_id = 18 immm = "programmazione" categoria = 1 #CONST aspect_asp = 0 forum_id_asp = "16" sc_asp = 1 %> <%-- --%>
 
- Iniziare a lavorare con Irrlicht -
 
COSA SERVE PER QUESTO TUTORIAL
Download | Chiedi sul FORUM | Glossario Dev C++ (http://www.bloodshed.net) - un computer non troppo vecchio - l'ultima release di Irrlicht (disponibile sul sito http://irrlicht.sourceforge.net)
Come iniziare a programmare videogiochi con Irrlicht

PREMESSA
A chi č indirizzato questo tutorial

Questo tutorial č mirato per tutti coloro che per la prima volta si avvicinano al mondo del game programming 3D e non conoscono la programmazione in C++, la teoria del 3D o ancora le directx e opengl.

INSTALLAZIONE
Installazione di Irrlicht e configurazione di dev C++

Innanzitutto bisogna decomprimere Irrlicht (ad esempio nel percorso "C:\"); prendere il file irrlicht.dll e installare dev C++: una volta installato cliccare su
file --> progetto --> empty project

Salvarlo quindi con il nome di "Tutorial".

Cliccare ora su:
progetto --> opzioni progetto (alt+p)

Nelle opzioni entrare nella cartella parametri e cliccare "aggiungi libreria o oggetto" serve per aggiungere la libreria di Irlicht al vostro progetto che si trova nel percorso "C:\irrlicht-1.3.1\lib\win32gcc\libirrlicht.a".

Ora spostarsi nella cartella "file e cartelle" e sotto cartella include aggiungere questo percorso:
"C:\irrlicht-1.3.1\include"

Ricordare sempre di premere prima aggiungi e poi ok altrimenti si deve rifare tutto. Ora cliccare su:
progetto --> nuova unita

Con questo passaggio č terminata la configurazione di dev C++.

COME INIZIARE
Nozioni base e primi passi

In questo tutorial verranno illustrati i parametri fondamentali per creare tutto il necessario per la scena. Il codice verrā commentato passo passo (č comunque allegato il codice sorgente completo):


#include <irrlicht.h>
#include <iostream>

 

Questa parte serve invece per includere i file irrlicht.h ed iostream che sono le librerie di irrlicht e del C++:


using namespace irr;
using namespace gui;
using namespace io;
using namespace scene;
using namespace video;
using namespace core;

 

Queste istruzioni servono per dire al compilatore che si useranno i comandi delle varie classi (irr, gui ecc., in questo esempio in realtā non servivano tutte):


int main () //questa č la funzione main del nostro progetto

{

video::E_DRIVER_TYPE driverType = video::EDT_DIRECT3D9;

printf("Please select the driver you want for this example:\n"\
" (a) Direct3D 9.0c\n (b) Direct3D 8.1\n (c) OpenGL 1.5\n"\
" (d) Software Renderer\n (e) Burnings Software Renderer\n"\
" (f) NullDevice\n (otherKey) exit\n\n");

char i;
std::cin >> i;

switch(i)
{
case 'a': driverType = video::EDT_DIRECT3D9;break;
case 'b': driverType = video::EDT_DIRECT3D8;break;
case 'c': driverType = video::EDT_OPENGL; break;
case 'd': driverType = video::EDT_SOFTWARE; break;
case 'e': driverType = video::EDT_BURNINGSVIDEO;break;
case 'f': driverType = video::EDT_NULL; break;
default: return 1;
}

 

Con queste istruzioni vogliamo che il nostro gioco quando inizi chieda all'utente il driver grafico da usare (directX 8.1, directX 9.0, opengl oppure il software di render di irrlicht). A questo punto č necessario creare il device. Il device si occupa di gestire l'intera scena, immaginiamo il set di un film, il device potrebbe esserne il regista e gli altri componenti che fra poco vedremo i vari attori.


IrrlichtDevice *device =
createDevice(driverType, core::dimension2d<s32>(640, 480));
queste sono le dimensioni della nostra scena 

if (device == 0)
return 1;


video::IVideoDriver* driver = device->getVideoDriver();
scene::ISceneManager* smgr = device->getSceneManager();

gui::IGUIEnvironment* guienv = device->getGUIEnvironment();

 

Non dimentichiamo che alla fine di ogni istruzione ci va ";". Abbiamo anche creato scene manager video driver e guienvirnonment che sono i collaboratori del device. Ora abbiamo al nostra scena e ci aggiungeremo il pg sidney che saluta quando comincia il programma.

IAnimatedMesh* mesh = smgr->getMesh("../../media/sydney.md2")
 

Gli oggetti si chiamano mesh, abbiamo con questa riga detto allo scene manager (smgr) di acquisire la nostra sydney col comando getMesh (get significa prendi acquisisci) ora dovremmo aggiungere il nodo della scena che conterrā sydney (avremo modo di spiegare cos'č un nodo):


IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode( mesh ); 


if (node)
{

node->setMaterialFlag(EMF_LIGHTING, false);
//abbiamo eliminato la luce dinamica altrimenti la nostra scena sarebbe apparsa tutta nera

node->setFrameLoop(0, 310);
//con questa istruzione abbiamo animato sydney dal frame 0 al frame 310

node->setMaterialTexture( 0,
driver->getTexture("../../media/sydney.bmp") );
//e con questa abbiamo aggiunto la "pelle" di sydney!!

}

 

Abbiamo usato l'istruzione If (letteralmente "se") per esser sicuri che la creazione del nodo sia avvenuta con successo altrimenti il programma avrebbe potuto dare errore. Adesso manca solo una telecamera per la nostra scena:


smgr->addCameraSceneNode(0, vector3df(0,30,-40), vector3df(0,5,0)); 
//E infine aggiungiamo il ciclo principale del nostro gioco ovvero il cuore del programma 

while(device->run()) { driver->beginScene(true, true, SColor(0,200,200,200)); smgr->drawAll(); guienv->drawAll(); driver->endScene(); } 

 

Premendo F9 se tutto č andato come dovrebbe avremo il nostro primo programma con Irrlicht HelloWorld che si trova anche nell'esempio della cartella:
bin --> win32gcc.
 

<< INDIETRO by pubblico