Tiens voilà un code de base :
#include <irrlicht.h>
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;
#ifdef _IRR_WINDOWS_
#pragma comment(lib, "Irrlicht.lib")
#endif
int main()
{
// create device //
IrrlichtDevice *device = createDevice(EDT_OPENGL,dimension2d<s32>(640,480),32,false,true,false);
// on déclare les environnements
IVideoDriver *driver = device->getVideoDriver();
ISceneManager *smgr = device->getSceneManager();
IGUIEnvironment *env = device->getGUIEnvironment();
// brouillard //
driver->setFog(SColor(255,120,120,120), true, 0, 3000, 0, true, true);
// couleur ombres //
smgr->setShadowColor(SColor(150,0,0,0));
// node de l'univers //
ISceneNode* univers = 0;
// fond du décor //
driver->setTextureCreationFlag(ETCF_CREATE_MIP_MAPS, false);
smgr->addSkyBoxSceneNode(
driver->getTexture("irrlicht2_up.jpg"),
driver->getTexture("irrlicht2_dn.jpg"),
driver->getTexture("irrlicht2_lf.jpg"),
driver->getTexture("irrlicht2_rt.jpg"),
driver->getTexture("irrlicht2_ft.jpg"),
driver->getTexture("irrlicht2_bk.jpg"));
driver->setTextureCreationFlag(ETCF_CREATE_MIP_MAPS, true);
// importation d'un mesh //
IAnimatedMesh* modele = smgr->getMesh("sydney.md2");//j'importe sydney
IAnimatedMeshSceneNode* Nmodele = smgr->addAnimatedMeshSceneNode(modele);//je l'ajoute à la scène
Nmodele->setMaterialFlag(EMF_LIGHTING, false);//je le rend indépendant de la lumière
Nmodele->setFrameLoop(1, 1); //je bloque l'animation car ça m'énerve
Nmodele->setMaterialTexture( 0, driver->getTexture("sydney.bmp") );//je lui met une texture
Nmodele->setPosition(vector3df(0,0,0);//on place sydney à l'origine
// ajout de la camera //
ICameraSceneNode* camera = smgr->addCameraSceneNodeFPS(univers,50.0f,1000.0f,-1,0,0,false,0.0f); //création de la camera
camera->setPosition(vector3df(100,50,100)); // positionnement de la camera
camera->setTarget(Nmodele->getPosition()); // on dit à la camera de regarder sydney à l'initialisation
//////////////////////////
// disable mouse cursor //
//////////////////////////
device->getCursorControl()->setVisible(false);
int lastFPS = -1;
while(device->run())
if (device->isWindowActive())
{
driver->beginScene(true, true, 0);
smgr->drawAll();
env->drawAll();
driver->endScene();
//////////////////
// informations //
//////////////////
int fps = driver->getFPS();
if (lastFPS != fps)
{
core::stringw str = L"Mon jeu 3D [";
str += driver->getName();
str += "] FPS:";
str += fps;
device->setWindowCaption(str.c_str());
lastFPS = fps;
}
}
device->drop();
return 0;
};