【Ogre编程入门与进阶】第十一章Ogre启动序列(Startup Sequence)

       相信每一位读者朋友一直会有一个这样的疑问,虽然我们通过前面章节的学习可以做出一些相对比较复杂的应用程序了,但是总是感觉不能完全把握整个Ogre3D的流程,而且我们前面都是在继承Ogre3D为我们提供的模板类的基础上构建的应用程序,虽然这样减少了我们不少工作,但是对于刚接触Ogre3D的我们来说或许并不是什么好事,是的,现在是时候和大家一起学习一下Ogre3D框架是怎样一步一步搭建起来,是怎样一步一步启动起来的了。

       这一节我们不再继承Ogre3D为我们提供的ExampleApplication类,也不再使用我们一直用的那个模板代码,我们自己从头编写所有代码来完成所有工作,以此让大家来跟好的理解Ogre3D的启动序列。

手动建立第一个应用

第一步,我们建立一个空的Win32项目;

第二步,添加OgreMain_d.lib OIS_d.lib,并修改工作目录(如果你对这里有任何疑问,请参阅《Ogre初步》一章);

第二步,新建一个Main.cpp文件(名字任意),并添加如下代码:

#include <windows.h>

#include "Ogre.h"

 

INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )

{

     return 0;

}

       第三步,创建一个Ogre3D的Root对象,在WinMain函数中加入如下代码:

Ogre::Root*mRoot = new Ogre::Root("plugins_d.cfg");

       第四步,添加Ogre配置对话框,继续在WinMain函数中加入如下代码:

if (!mRoot->showConfigDialog())

{

     return -1;

}

       第五步,创建渲染窗口:

Ogre::RenderWindow*mWindow = mRoot->initialise(true,"IMedia Project");

       第六步,创建场景管理器:

Ogre::SceneManager*mSceneMgr = mRoot->createSceneManager(Ogre::ST_GENERIC);

       第七步,创建相机:

Ogre::Camera*mCamera = mSceneMgr->createCamera("MyCamera");

mCamera->setPosition(Ogre::Vector3(0,0,80));

mCamera->lookAt(Ogre::Vector3(0,0,-300));

mCamera->setNearClipDistance(5);

       第八步,创建视口,并设置背景色以及纵横比:

Ogre::Viewport*vp = mWindow->addViewport(mCamera);

vp->setBackgroundColour(Ogre::ColourValue(0,0,0));

mCamera->setAspectRatio(Ogre::Real(vp->getActualWidth())/Ogre::Real(vp->getActualHeight()));

       第九步,调用跟对象的startRendering函数开始渲染场景:

mRoot->startRendering();

下面列出我们添加的所有代码:

#include <windows.h>

#include "Ogre.h"

 

INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )

{

     Ogre::Root*mRoot = new Ogre::Root("plugins_d.cfg");

     if (!mRoot->showConfigDialog())

     {

         return -1;

     }

     Ogre::RenderWindow*mWindow = mRoot->initialise(true,"IMedia Project");

     Ogre::SceneManager*mSceneMgr = mRoot->createSceneManager(Ogre::ST_GENERIC);

     Ogre::Camera*mCamera = mSceneMgr->createCamera("MyCamera");

     mCamera->setPosition(Ogre::Vector3(0,0,80));

     mCamera->lookAt(Ogre::Vector3(0,0,-300));

     mCamera->setNearClipDistance(5);

 

     Ogre::Viewport*vp = mWindow->addViewport(mCamera);

     vp->setBackgroundColour(Ogre::ColourValue(0,0,0));

     mCamera->setAspectRatio(Ogre::Real(vp->getActualWidth())/Ogre::Real(vp->getActualHeight()));

    

     mRoot->startRendering();

     return 0;

}

编译并运行程序,如果读者能看到一个黑屏

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值