| 设置好IDE后,编译器就会知道引擎头文件的位置,我们可以在代码中包含这个头文件了。 IrrLicht引擎的所有东西都包含在命名空间“irr”中.如果你想使用这个引擎的类,你必须在类名前加上“irr::”。例如要使用IrrlichtDevice, 应该写: irr::IrrlichtDevice. 想不加前缀,可以在代码的开始处添加如下代码. 有5个子命名空间在IrrLicht引擎,你可以查阅具体的说明在下以链接: 'Namespace List'.好像irr命名空间一样,你可能在代码的开始处加如下代码: 
            
                
                    
                        | using namespace core;using namespace scene;
 using namespace video;
 using namespace io;
 using namespace gui;
 |  我们要链接IrrLicht.lib才可以使用IrrLicht.dll。可以在项目中设置,但为了简单也可如下设置: 
            
                
                    
                        | #pragma comment(lib, "Irrlicht.lib") |  我们可以在任何平台中使用main函数作为程序的入口。而在Windows平台中,还可以使用WinMain函数,这样就可以不弹出控制台窗口。但在这里,为了使例子简单,我们使用main作为程序的入口: 'createDevice' 函数作为引擎最重要的函数。用这个函数创建IrrLicht设备作为根对象(root object)来控制引擎。 createDevice()有7个参数: 
                deviceType: 设备类型。可以设置的类型有Null device, the Software device, Direct3D8, Direct3D9, or OpenGL. 在这里我们使用 EDT_SOFTWARE,当然还能使用以下的值EDT_NULL, EDT_DIRECT3D8, EDT_DIRECT3D9, or EDT_OPENGL(具体请查阅枚举E_DRIVER_TYPE的定义). windowSize: 设定窗口的大小, 这里设为512x384(具体请查阅模板dimension2d的定义).bits: 设定像素为16位或32位,这个参数在窗口模式时无效fullscreen: 指定程序是否为全屏模式.stencilbuffer: 指定是否使用模板缓存画阴影. vsync: 指定是否使用垂直同步,只在全屏模式中有效. eventReceiver: 一个接收事件的对象,在这里我们不使用,设为0. 
            
                
                    
                        | IrrlichtDevice *device =createDevice(EDT_SOFTWARE, dimension2d<s32>(512, 384), 16,
 false, false, false, 0);
 |  设置窗口的标题。留意在字符串前的L。IrrLicht引擎使用宽字符显示文本。 
            
                
                    
                        | device->setWindowCaption(L"Hello World! - Irrlicht Engine Demo"); |  获取视频驱动(video driver), 场景管理器(SceneManager),界面环境(graphical user interface environment)的指针,则不必经常调用device->getVideoDriver(), device->getSceneManager(), 和 device->getGUIEnvironment(). 
            
                
                    
                        | IVideoDriver* driver = device->getVideoDriver();ISceneManager* smgr = device->getSceneManager();
 IGUIEnvironment* guienv = device->getGUIEnvironment();
 |  我们使用界面环境(GUI environment)在窗口中添加一个静态文本.这个文本被放在左上角坐标为(10,10)右下角坐标为(200,22)的位置. 
            
                
                    
                        | guienv->addStaticText(L"Hello World! This is the Irrlicht Software engine!",rect<int>(10,10,200,22), true);
 |  使显示有趣,我们加载并显示一个QUAKE2的模型。我们只需使用场景管理器(Scene Manager)的 getMesh()获取一个网格(mesh)和并用addAnimatedMeshSceneNode() 函数添加场景节点(SceneNode)的去显示这个网格. getMesh()函数还支持的模型格式有Maya(*.obj),Quake3(*.bsp),Milshape(*.ms3d)。顺带提一下,这个例子中如此COOL的模式名叫“sydney“是由Brian Collins制作的。 
            
                
                    
                        | IAnimatedMesh* mesh = smgr->getMesh("../../media/sydney.md2");IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode( mesh );
 |  为了良好观察网格,我们对材质作了如下更改:我们取消灯光,因为在这里没有动态光,网格将会完全黑色。然后我们设置帧循环,在这里设置动画的帧循环为0-310。最后,设置那网格的纹理。如果没有纹理,网格将会只有一种颜色。 
            
                
                    
                        | if (node){
 node->setMaterialFlag(EMF_LIGHTING, false);
 node->setFrameLoop(0, 310);
 node->setMaterialTexture( 0, driver->getTexture("../../media/sydney.bmp") );
 }
 |  要观察到这个网格,我们在坐标(0,30,-40)的地方向(0,5,0)放置一个摄像机。 
            
                
                    
                        | smgr->addCameraSceneNode(0, vector3df(0,30,-40), vector3df(0,5,0)); |  我们已经设置好场景了,用如下的方法绘制每一件物体: 在while循环中运行设备直到关闭窗口或按ALT+F4。 每一件物体都在beginScene()和endScene()函数之间绘制。BeginScene用于设置一个颜色清理屏幕和设置深度缓存。然后我们绘制场景管理器和界面环境的内容。调用endScene把全部物体都显示在屏幕上 
            
                
                    
                        |           driver->beginScene(true, true, SColor(255,100,101,140));
 
             smgr->drawAll();             guienv->drawAll();           driver->endScene();   } |  在最后,我们必须删除之前使用createDevice()函数创建的设备。在IrrLicht引擎中,任何使用含有create的函数或方法创建的对象,都要调用->drop()函数删除。可查看 documentation 获得更详细的信息. 
            
                
                    
                        |           device->drop();return 0;
   } |  就这样试试编译和运行一下。 |