转载:OGRE一起学(六)最简单的游戏窗口代码
示例代码 :
文件目录 :
OGRE\Samples\OGRE_YC_001_Simplest main.cpp Simplest.h OGRE_YC_001_Simplest.vcproj
使用方法 :
- (1) 打开 VS.NET ,在主菜单中选择 [工具]-[选项...] ,打开 "选项" 面板,在 [项目]-[VC++ 目录] 的 “包含文件” 目录下添加下面这个路径:
E:\Desktop\Learning\OGRE\Samples\Common\include
如图:
这样设置的意图是使本节和以后的所有示例都能方便地直接包含进 OGRE\Samples\Common\include 目录下的 ExampleApplication.h 和 ExampleFrameListener.h 两个头文件,这两个头文件定义了一个简单通用的应用程序框架,在这个通用框架里集成了应用程序的设置、运行环境的创建、画面更新、消息界面、输入检测、镜头控制等等的一系列现成方法,这两个头文件放在 OGRE\Samples\Common\include 目录下,被所有的示例文件所引用,因为这两个文件已经帮我们做好了一些最基本的工作,所以可以有助于我们在一开始就直接切入到 OGRE 的实用层面,省略一些初期的繁琐步骤。 这两个头文件,如果不感兴趣,在开始的时候都不用看。如果比较感兴趣,可以试着改一些参数,比方说,我的就修改了窗口的背景颜色和镜头的移动速度:
ExampleApplication.h : virtual void createViewports(void) { Viewport* vp = mWindow->addViewport(mCamera); vp->setBackgroundColour(ColourValue(0.3f,0.4f,0.5f)); // 设置背景颜色 // ... }
ExampleFrameListener.h : ExampleFrameListener(RenderWindow* win, Camera* cam, bool useBufferedInputKeys = false, bool useBufferedInputMouse = false) { // ... mRotateSpeed = 36; // 镜头旋转速度 mMoveSpeed = 500; // 镜头移动速度 // ... }
- (2) 使用 VS.NET 打开 OGRE\Samples\Samples.sln ;
- (3) 调出解决方案资源管理器,在解决方案"Samples"上右击,在弹出的右键关联菜单中选择 [添加]-[现有项目...] ,选择 OGRE_YC_001_Simplest.vcproj 并确定;
- (4) 因为 OGRE_YC_001_Simplest.vcproj 里面没有包含工作目录的信息,所以还需要再设置一下工作目录,这样我们可以直接在 VC.NET 中运行和调试生成的 OGRE 程序。
在解决方案资源管理器的 OGRE_YC_001_Simplest 项目上右击,在弹出的关联菜单中选择 [属性] ,弹出项目属性页,添加下列选项:
Debug 调试: 工作目录:..\Common\bin\Debug Release 调试: 工作目录:..\Common\bin\Release
- (5) 从主菜单中选择 [生成]-[批生成...] ,弹出 "批生成" 面板,仅仅勾选 OGRE_YC_001_Simplest 项目的 Debug 和 Release 配置,然后点击右边的 [生成] 或 [重新生成] 按钮,如下图,然后静待项目生成 Debug 和 Release 两个版本;
- (6) 生成的 exe 文件在 OGRE\Samples\Common\bin 的 Release 和 Debug 文件夹里,可以运行看看,效果如图:
本章以后的示例代码编译办法与此相同,以后不再敷叙。
解说正文 :
这个是最简单的 OGRE 应用程序代码。
在 Simplest.h 中,它定义了公用的示例应用程序基类 ExampleApplication 的派生类 SimplestApplication ,并重新定义了 createScene 方法(这一步不能省略,因为 createScene 是个纯虚函数)。
然后在 main.cpp 中,简单创建一个 SimplestApplication 实例并启动它:
SimplestApplication app; try { app.go(); } catch( Ogre::Exception& e ) { MessageBox( ... ); } 就这么简单。而且在以后章节的示例中, main.cpp 基本上还是这么几行短短的代码。