开始学习3D了,很早就想学了,怎奈数学不好,一直畏惧,可是如果不直面它,就永远的害怕,永远的逃避,这是在很糟.
于是,我终于开始了我的3D之旅.
在学校时候就看上了OGRE,十几万行代码的图形引擎,它给我的感觉很好.不过奇怪的是国内似乎根本没有OGRE的社区,曾经是在91看到的,可是那边早已经荒废了.
我使用的是OGRE的 1.2.4,VC是VC.net 2003,也就是VC7.1.
我是下载源代码,自行编译的,编译需要两个包,我选择了以下两个包:
OgreDependencies_VC71_1.2.0p2.zip
ogre-win32-v1-2-4.zip
第二个包是引擎的源码包,解压缩之.
第一个包是引擎编译的依存库,里面有两个文件夹,Samples和Dependencies.Samples是依存库的DLL文件,而Dependencies是依存库的头文件和Lib文件.这两个文件夹只要覆盖掉源码相同的文件夹就可以了.
接下来就开始进行编译,编译的过程是缓慢的,总共得耗费半个小时左右.我还把Debug和Release都编译出来了,那真是痛苦的过程啊...
引擎我放到了G:/OGRE/OGRE1_2_4,编译完了引擎的开发包之后,下面开始设置VC环境了.
Tool->Options->Projects->VC++ Directories.
设置头文件包含路径:
1.在Show Directories for选择Include Files;
2.加入:G:/OGRE/OGRE1_2_4/Dependencies/include,
G:/OGRE/OGRE1_2_4/OgreMain/include
设置Lib库包含路径:
1.在Show Directories for选择Librarys Files;
2.加入G:/OGRE/OGRE1_2_4/OgreMain/lib/Release,
G:/OGRE/OGRE1_2_4/OgreMain/lib/Debug
G:/OGRE/OGRE1_2_4/Dependencies/lib/Release
G:/OGRE/OGRE1_2_4/Dependencies/lib/Debug
这个时候就可以开始我们的第一个OGRE了.
其实,OGRE的引擎源码包里面已经自带了很多的例子,不过看起来相当之难看,反正我觉得很难读,于是,我自己按照自己较为熟悉的风格修改了Demo,弄了一个名为Empty的项目,里面什么都没有做,就是一个空白的窗口(准确说是纯黑的窗口).
对于我们这些初学者来说,必须得弄清楚Samples/Common/include下面的三个头文件:
ExampleApplication.h
ExampleFrameListener.h
ExampleLoadingBar.h
其实这三个文件和MFC有点形似:
ExampleApplication.h里面的类就是应用程序类,它是一个基类;
ExampleFrameListener.h里面的类算是一个窗口类,鼠标,键盘的检测都在这里,还有渲染窗口的刷新等;
ExampleLoadingBar.h其实有没有也没什么关系,粗略看了看,它只是一个加载条的类.
Empty这个项目有以下文件:
/main.cpp
/Empty.h
/Empty.cpp
/Common/ExampleApplication.h
/Common/ExampleApplication.cpp
/Common/ExampleFrameListener.h
/Common/ExampleFrameListener.cpp
/Common/ExampleLoadingBar.h
/Common/ExampleLoadingBar.cpp
我把上面的三个公用头文件拆分出了一个cpp,把实现都丢到了cpp里面,之前它们都是直接写在h里面的,对于学习来说,极其难看,就拆开了.
我先把三个项目文件内容列出来:
main.cpp
#include <windows.h>
#include
"Empty.h"
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
//
=============================================================================
//
WinMain
// -----------------------------------------------------------------------------
///
// =============================================================================
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )
{
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
// 创建应用程序对象
EmptyApplication app;
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
// 进入应用程序循环
try {
app.go();
} catch( Ogre::Exception& e ) {
MessageBox( NULL, e.getFullDescription().c_str(), "应用程序出现异常!", MB_OK | MB_ICONERROR | MB_TASKMODAL );
}
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
return 0;
}
Empty.h
#include "ExampleApplication.h"
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
class EmptyApplication : public
ExampleApplication
{
public:
EmptyApplication();
~EmptyApplication();
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
protected:
void createScene(void);
}
;
Empty.cpp
#include <windows.h>
#include
"Empty.h"
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
//
=============================================================================
//
EmptyApplication
// -----------------------------------------------------------------------------
///
// =============================================================================
EmptyApplication::EmptyApplication()
{
}
//
=============================================================================
//
~EmptyApplication
// -----------------------------------------------------------------------------
///
// =============================================================================
EmptyApplication::~
EmptyApplication()
{
}
//
=============================================================================
//
createScene
// -----------------------------------------------------------------------------
///
// =============================================================================
void EmptyApplication::createScene(void
)
{
}
可以看到,根本什么都没有做,呵呵.
当你第一次运行OGRE的Demo时,你可以看到,每次运行的时候都会弹出一个配置对话框出来,一两次还没什么,多了就很让人厌烦,恨不得马上把它踢掉,
OK,我终于把它给踢掉了!不过在此之前,你必须确定你程序运行的当前目录下有ogre.cfg这个文件,它就是那个配置对话框所配置的东西.内容大致如下:
Render System=
OpenGL Rendering Subsystem
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
[Direct3D9 Rendering Subsystem]
Allow NVPerfHUD
=
No
Anti aliasing=
None
Floating-point mode=
Fastest
Full Screen=
No
Rendering Device=
Intel(R) 82915G/GV/910GL Express Chipset Family
VSync=
No
Video Mode=800 x 600 @ 32
-bit colour
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
[OpenGL Rendering Subsystem]
Colour Depth
=32
Display Frequency
=
N/A
FSAA=0
Full Screen
=
No
RTT Preferred Mode=
FBO
VSync=
No
Video Mode=800 x 600
如果没有这个文件,程序是会挂掉D.
啊,现在我要去掉它,是的,现在我要把这个该死的对话框去掉,打开ExampleApplication.h吧,找到configure()这个函数,你将看到的函数应该是这个样子的.
/** Configures the application - returns false if the user chooses to abandon configuration. */
virtual bool configure(void
)
{
// Show the configuration dialog and initialise the system
// You can skip this and use root.restoreConfig() to load configuration
// settings if you were sure there are valid ones saved in ogre.cfg
if(mRoot->showConfigDialog())
{
// If returned true, user clicked OK so initialise
// Here we choose to let the system create a default rendering window by passing 'true'
mWindow = mRoot->initialise(true);
return true;
}
else
{
return false;
}
}
看到了第二到第四行的注释没有?如果你英语还好,就看懂了,知道怎么做了,如果看不懂,就解释一下,大致意思是:显示配置对话框,并初始化系统.你可以忽略掉此对话框,使用 root.restoreConfig() 加载配置.不过你这么做之前必须确定你设置并且保存了一个ogre.cfg文件.
明白了吧,下面给出我修改后的代码:
bool
ExampleApplication::configure()
{
// 显示配置对话框,并初始化系统.
// 你可以忽略掉此对话框,使用 root.restoreConfig() 加载配置.
// 不过你这么做之前必须确定你设置并且保存了一个ogre.cfg文件.
//if(mRoot->showConfigDialog())
if(mRoot->restoreConfig())
{
// If returned true, user clicked OK so initialise
// Here we choose to let the system create a default rendering window by passing 'true'
mWindow = mRoot->initialise(true);
return true;
}
else
{
return false;
}
}
非常之简单,就是把mRoot->showConfigDialog()修改成了mRoot->restoreConfig(),直接加载配置文件.
啊,你应该已经发现了我的修改以后的代码和之前的代码不一样,嗯,是的.因为这个是在cpp里面的实现.
翻了一下<Pro OGRE 3D Programming>其实还有更好的代码,如下:
bool
ExampleApplication::configure()
{
// 显示配置对话框,并初始化系统.
// 你可以忽略掉此对话框,使用 root.restoreConfig() 加载配置.
// 不过你这么做之前必须确定你设置并且保存了一个ogre.cfg文件.
//if(mRoot->showConfigDialog())
if(mRoot->restoreConfig())
{
// If returned true, user clicked OK so initialise
// Here we choose to let the system create a default rendering window by passing 'true'
mWindow = mRoot->initialise(true,"渲染窗口");
return true;
}
else
{
if (mRoot->showConfigDialog() )
{
mWindow = mRoot->initialise(true);
return true;
}
else
{
return false;
}
}
}
如果有ogre.cfg,就读取,如果没有的话就新建一个.
OGRE修改窗口标题
OGRE默认的窗口标题为"OGRE Render Window",在哪修改它哪?远在天边,近在眼前.就在上面代码中的一个函数:mRoot->initialise();
看到了吧,
mWindow = mRoot->initialise(true,"渲染窗口");
这样,窗口标题就变成了 "渲染窗口"了.
于是,我终于开始了我的3D之旅.
在学校时候就看上了OGRE,十几万行代码的图形引擎,它给我的感觉很好.不过奇怪的是国内似乎根本没有OGRE的社区,曾经是在91看到的,可是那边早已经荒废了.
我使用的是OGRE的 1.2.4,VC是VC.net 2003,也就是VC7.1.
我是下载源代码,自行编译的,编译需要两个包,我选择了以下两个包:
OgreDependencies_VC71_1.2.0p2.zip
ogre-win32-v1-2-4.zip
第二个包是引擎的源码包,解压缩之.
第一个包是引擎编译的依存库,里面有两个文件夹,Samples和Dependencies.Samples是依存库的DLL文件,而Dependencies是依存库的头文件和Lib文件.这两个文件夹只要覆盖掉源码相同的文件夹就可以了.
接下来就开始进行编译,编译的过程是缓慢的,总共得耗费半个小时左右.我还把Debug和Release都编译出来了,那真是痛苦的过程啊...
引擎我放到了G:/OGRE/OGRE1_2_4,编译完了引擎的开发包之后,下面开始设置VC环境了.
Tool->Options->Projects->VC++ Directories.
设置头文件包含路径:
1.在Show Directories for选择Include Files;
2.加入:G:/OGRE/OGRE1_2_4/Dependencies/include,
G:/OGRE/OGRE1_2_4/OgreMain/include
设置Lib库包含路径:
1.在Show Directories for选择Librarys Files;
2.加入G:/OGRE/OGRE1_2_4/OgreMain/lib/Release,
G:/OGRE/OGRE1_2_4/OgreMain/lib/Debug
G:/OGRE/OGRE1_2_4/Dependencies/lib/Release
G:/OGRE/OGRE1_2_4/Dependencies/lib/Debug
这个时候就可以开始我们的第一个OGRE了.
其实,OGRE的引擎源码包里面已经自带了很多的例子,不过看起来相当之难看,反正我觉得很难读,于是,我自己按照自己较为熟悉的风格修改了Demo,弄了一个名为Empty的项目,里面什么都没有做,就是一个空白的窗口(准确说是纯黑的窗口).
对于我们这些初学者来说,必须得弄清楚Samples/Common/include下面的三个头文件:
ExampleApplication.h
ExampleFrameListener.h
ExampleLoadingBar.h
其实这三个文件和MFC有点形似:
ExampleApplication.h里面的类就是应用程序类,它是一个基类;
ExampleFrameListener.h里面的类算是一个窗口类,鼠标,键盘的检测都在这里,还有渲染窗口的刷新等;
ExampleLoadingBar.h其实有没有也没什么关系,粗略看了看,它只是一个加载条的类.
Empty这个项目有以下文件:
/main.cpp
/Empty.h
/Empty.cpp
/Common/ExampleApplication.h
/Common/ExampleApplication.cpp
/Common/ExampleFrameListener.h
/Common/ExampleFrameListener.cpp
/Common/ExampleLoadingBar.h
/Common/ExampleLoadingBar.cpp
我把上面的三个公用头文件拆分出了一个cpp,把实现都丢到了cpp里面,之前它们都是直接写在h里面的,对于学习来说,极其难看,就拆开了.
我先把三个项目文件内容列出来:
main.cpp
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockEnd.gif)
Empty.h
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockEnd.gif)
当你第一次运行OGRE的Demo时,你可以看到,每次运行的时候都会弹出一个配置对话框出来,一两次还没什么,多了就很让人厌烦,恨不得马上把它踢掉,
OK,我终于把它给踢掉了!不过在此之前,你必须确定你程序运行的当前目录下有ogre.cfg这个文件,它就是那个配置对话框所配置的东西.内容大致如下:
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
啊,现在我要去掉它,是的,现在我要把这个该死的对话框去掉,打开ExampleApplication.h吧,找到configure()这个函数,你将看到的函数应该是这个样子的.
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockEnd.gif)
明白了吧,下面给出我修改后的代码:
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockEnd.gif)
啊,你应该已经发现了我的修改以后的代码和之前的代码不一样,嗯,是的.因为这个是在cpp里面的实现.
翻了一下<Pro OGRE 3D Programming>其实还有更好的代码,如下:
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockEnd.gif)
OGRE修改窗口标题
OGRE默认的窗口标题为"OGRE Render Window",在哪修改它哪?远在天边,近在眼前.就在上面代码中的一个函数:mRoot->initialise();
看到了吧,
mWindow = mRoot->initialise(true,"渲染窗口");
这样,窗口标题就变成了 "渲染窗口"了.