} } }

    【Irrlicht鬼火引擎】把握引擎应用流程,入门法度HelloWorld

    添加时间:2013-7-15 点击量:

    解析


    一、简述应用步调


    一般而言,对于一个简单的法度,Irrlicht引擎的一般应用步调如下:


    预处理惩罚:
    (1)包含 <irrlicht.h> 头文件
    #include <irrlicht.h>
    (2)设置定名空间
    using namespace irr;
    设置定名空间会让之后的编程稍微轻松一点,就像应用C++进行编程时,应用using namespace std;一样,std::cout<<→cout<<。
    (3)通知编译器连接irr库文件
    #ifdef _IRR_WINDOWS_
    #pragma comment(lib, Irrlicht.lib)
    #pragma comment(linker, /subsystem:windows /ENTRY:mainCRTStartup)
    #endif
    若是不进行如上操纵的话,在法度编译的过程中,会在Link项目组报错。所以说这一步是很是首要的,必然不要忘怀。


    到这里,预处理惩罚的步调就完成了,接下来,我们要给法度供给一个main函数,作为法度的进口。
    在main函数中须要做的步调如下:
    (1)创扶植备
    (2)获取场景经管器,GUI景象,视频设备的指针,应用他们进行衬着把握
    (3)在device->Run()的景象下,进行轮回。在driver->beginScene()和driver->endScene()中进行所有内容的衬着把握。(我们之前提到过,driver是IVideoDriver的指针,负责2D\3D的衬实在现)
    (4)开释设备
    一般而言,应用device->drop();语句就实现了设备的开释。


    就如许,一个很是根蒂根基的基于Irrlicht引擎的法度就完成了,我们可以在这个根蒂根基之上,进行各类添加操纵,比如说添加一个mesh模型,添加一个FPS摄像机,添加地形,添加天空盒等等。这些操纵在将来的文章中会一一提到。


    二、helloWorld法度示例


    下面,为大师显现一个按照上边所述流程而写的简单法度,在法度中,在须要懂得、重视的项目组添加了注释,用来申明语句在法度中的感化,会对你的懂得有所帮助!



    //引入头文件
    
    #include <irrlicht.h>

    //设置定名空间,开端的时辰进行如下声明,可以省去今后写irr::core:: 的麻烦
    using namespace irr;

    using namespace core;
    /scene是场景经管,包含场景节点,摄像机,例子体系,MESH,通知布告板,灯光,动画器,天空盒,地形等绝大项目组

    的3D功能
    /
    using namespace scene;
    /video首要负责对视频驱动的设置,2D和3D的衬着都在这里实现,包含了纹理,材质,灯光,,顶点等衬着属

    性的把握
    /
    using namespace video;
    using namespace io;
    using namespace gui;


    //为了可以或许应用Irrilcht.dll文件,要通知编译器连接Irrlicht.lib 库文件
    #ifdef _IRR_WINDOWS_
    #pragma comment(lib, Irrlicht.lib)
    #pragma comment(linker, /subsystem:windows /ENTRY:mainCRTStartup)
    #endif

    int main()
    {
    //创扶植备
    IrrlichtDevice device =
    createDevice( video::EDT_SOFTWARE, dimension2d
    <u32>(640480), 16
    falsefalsefalse0);

    if (!device)
    return 1;

    //设置窗口名称
    device->setWindowCaption(LHello World! - Irrlicht Engine Demo);

    IVideoDriver
    driver = device->getVideoDriver();
    ISceneManager
    smgr = device->getSceneManager();
    IGUIEnvironment
    guienv = device->getGUIEnvironment();

    //在窗口内添加一个静态文本
    guienv->addStaticText(LHello World! This is the Irrlicht Software renderer!
    rect
    <s32>(101026022), true);

    //场景中参加摄像机,在(0,30,-40)地位,视点地位在(0,5,0)
    smgr->addCameraSceneNode(0, vector3df(030,-40), vector3df(050));

    while(device->run())
    {

    //所有的绘制都必须在beginScene()和endScene()之间
    //beginScene()清空屏幕弥补上色彩SColor(255,100,101,140)
    driver->beginScene(truetrue, SColor(255100101140));

    smgr
    ->drawAll();
    guienv
    ->drawAll();

    driver
    ->endScene();
    }

    //法度停止的时辰,记得要删除设备对象
    device->drop();

    return 0;
    }


    所有随风而逝的都属于昨天的,所有历经风雨留下来的才是面向未来的。—— 玛格丽特·米切尔 《飘》
    分享到: