您的位置:首页 > 其它

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

2017-05-03 14:14 295 查看
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加载网格数据并添加到场景中。


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: