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加载网格数据并添加到场景中。