Listing 1. Irrlicht Sample Program 1 #include 2 #include "unistd.h" 3 using namespace irr; 4 using namespace irr::core; 5 using namespace irr::video; 6 using namespace std; 7 IrrlichtDevice* device; 8 video::IVideoDriver* driver; 9 scene::ISceneManager* smgr; 10 scene::ICameraSceneNode* camera; 11 scene::IAnimatedMesh* ground; 12 scene::IMeshSceneNode* ground_node; 13 scene::IAnimatedMesh* house; 14 scene::IMeshSceneNode* house_node; 15 scene::IAnimatedMesh* avatar; 16 scene::IAnimatedMeshSceneNode* avatar_node; 17 video::SMaterial material; 18 scene::ISceneNode* cube; 19 int main () { 20 //video::EDT_SOFTWARE 21 //video::EDT_NULL 22 //video::EDT_OPENGL, 23 device=createDevice(video::EDT_OPENGL, 24 dimension2d(640,480),16,false,true); 25 26 if (device == 0) return(1); 27 driver = device->getVideoDriver(); 28 smgr = device->getSceneManager(); 29 smgr->addSkyBoxSceneNode( 30 driver->getTexture("./graph/irrlicht2_up.jpg"), 31 driver->getTexture("./graph/irrlicht2_dn.jpg"), 32 driver->getTexture("./graph/irrlicht2_lf.jpg"), 33 driver->getTexture("./graph/irrlicht2_rt.jpg"), 34 driver->getTexture("./graph/irrlicht2_ft.jpg"), 35 driver->getTexture("./graph/irrlicht2_bk.jpg")); 36 37 smgr->addLightSceneNode(0, vector3df(0, 100, 0), 38 video::SColorf(1.0f, 1.0f, 1.0f), 1000.0f, -1); 39 smgr->setAmbientLight(video::SColorf(255.0,255.0,255.0)); 40 camera = smgr->addCameraSceneNodeFPS(0,30.0f,90.0f,-1, 0,0,false,0.0f); 41 camera->setPosition(vector3df(30,10,30)); 42 ground = smgr->getMesh("./graph/grass.obj"); 43 ground_node = smgr->addMeshSceneNode(ground); 44 ground_node->setScale(vector3df(1000,1,1000)); 45 ground_node->setMaterialFlag(EMF_LIGHTING, false); 46 material.setTexture(0, driver->getTexture("./graph/building.tga")); 47 house = smgr->getMesh("./graph/building.obj"); 48 for (int i=0; i<5; i++) { 49 house_node = smgr->addMeshSceneNode(house); 50 house_node->setScale(vector3df(.5,.5,.5)); 51 house_node->setPosition(vector3df(30*i+5,0,-30)); 52 house_node->getMaterial(0) = material; 53 house_node->setRotation(vector3df(0,90,0)); 54 } 55 material.setTexture(0, driver->getTexture("./graph/sydney.bmp")); 56 avatar = smgr->getMesh("./graph/sydney.md2"); 57 avatar_node = smgr->addAnimatedMeshSceneNode(avatar); 58 avatar_node->setScale(vector3df(.1,.1,.1)); 59 avatar_node->setPosition(vector3df(5,2.5,5)); 60 avatar_node->setRotation(vector3df(0,270,0)); 61 avatar_node->getMaterial(0) = material; 62 cube = smgr->addCubeSceneNode(1.0f, 0, -1, 63 vector3df(10, 2, 10), 64 vector3df(45.0, 0, 0), 65 vector3df(1.0f, 1.0f, 1.0f)); 66 cube->setMaterialTexture(0, driver->getTexture("graph/purple.jpg")); 67 cube->addAnimator( smgr->createRotationAnimator(vector3df(1,.5,.25))); 68 while (device->run()) { 69 driver->beginScene(true,true, video::SColor(255,100,101,140)); 70 smgr->drawAll(); 71 driver->endScene(); 72 } 73 driver->drop(); 74 return(0); 75 }