Ogre2.1 分析笔记(二)-程序启动流程

1.      初始化一个Root对象

Ogre::Root *root = new Ogre::Root();

2.      在初始化Root对象时,Ogre会同时初始化D3D11和OGL3+两种渲染系统。此步骤中应该选择将哪个渲染系统作为当前的渲染系统。

std::string sRenderSystem = "OpenGL 3+ Rendering Subsystem";

Ogre::RenderSystem *pRenderSystem =root->getRenderSystemByName(sRenderSystem);

root->setRenderSystem(pRenderSystem);

3.      使用渲染系统对渲染窗口进行设置,并创建渲染窗口。

pRenderSystem->setConfigOption("Full Screen", "No");

    pRenderSystem->setConfigOption("Video Mode", "800x600 @32-bit colour");

    root->initialise(false);

Ogre::RenderWindow *window =root->createRenderWindow("OgreTest", 800, 600, false);

initialise(true)也可以创建窗口。

4.      创建场景管理器和相机。

Ogre::SceneManager *sceneManager = root->createSceneManager(Ogre::ST_GENERIC,1,Ogre::INSTANCING_CULLING_SINGLETHREAD);

    Ogre::Camera *camera =sceneManager->createCamera("Camera");

    camera->setPosition(0,0, 50);

    camera->lookAt(0,0, 0);

camera->setNearClipDistance(5);

5.      创建工作空间

Ogre::CompositorManager2 *pCompositorManager = root->getCompositorManager2();

    const std::string sWorkSpace = "OgreTest";

    pCompositorManager->createBasicWorkspaceDef(sWorkSpace,Ogre::ColourValue::White);

pCompositorManager->addWorkspace(sceneManager,window, camera, sWorkSpace, true);

6.      加载HLMS系统

    //加载hlms系统

    std::string dataFolder = "C:/Users/aa/Documents/ogre/Samples/Media/";

    std::string shaderSyntax = "GLSL";

    Ogre::Archive *archiveLibrary =Ogre::ArchiveManager::getSingletonPtr()->load(

        dataFolder+ "Hlms/Common/" + shaderSyntax,

        "FileSystem", true);

    Ogre::Archive *archiveLibraryAny= Ogre::ArchiveManager::getSingletonPtr()->load(

        dataFolder+ "Hlms/Common/Any",

        "FileSystem", true);

Ogre::Archive *archivePbsLibraryAny = Ogre::ArchiveManager::getSingletonPtr()->load(

        dataFolder+ "Hlms/Pbs/Any",

        "FileSystem", true);

 

    Ogre::ArchiveVec library;

    library.push_back(archiveLibrary);

    library.push_back(archiveLibraryAny);

    Ogre::Archive *archivePbs =Ogre::ArchiveManager::getSingletonPtr()->load(

        dataFolder+ "Hlms/Pbs/" + shaderSyntax,

        "FileSystem", true);

    library.push_back(archivePbsLibraryAny);

    Ogre::HlmsPbs *hlmsPbs = OGRE_NEW Ogre::HlmsPbs(archivePbs,&library);

    Ogre::Root::getSingleton().getHlmsManager()->registerHlms(hlmsPbs);

library.pop_back();

7.      初始化资源组,定位资源

Ogre::ResourceGroupManager::getSingleton().addResourceLocation("C:/Users/aa/Documents/ogre/Samples/Media/packs/DebugPack.zip", "Zip");

Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();

8.      创建物体,添加到场景图中,并设置位置。

Ogre::Item *pItem = sceneManager->createItem("Cube_d.mesh", Ogre::ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME);

    Ogre::SceneNode *pSceneNode =sceneManager->getRootSceneNode();

    pSceneNode->attachObject(pItem);

pSceneNode->setPosition(0.0,0.0, 0.0);

9.      开始渲染

while (true)

{

    root->renderOneFrame();

 

}

总结一下:启动流程主要分为几个步骤:1.创建渲染窗口;2加载HLMS系统,3加载网格数据并添加到场景中。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值