OGRE基础教程1
2011年06月24日
简介:本教程基于Ogre Wiki上的Basic Tutorial系列,并依据笔者使用的vs2005+sp1+OgreSDK1.4.3开发环境简化整理而来,其中穿插着笔者自己的理解。这是教程的第一部分,也是我的学习笔记。
正文:凡是翻译过几篇技术类文章的人都深知从头至尾忠实重现作者的原意是一件多么令人头疼的事情。当我从诸多曾经许诺要翻译的文章中爬出来的时候,我决定这次不做那样一个"傻子",重写那些文章要比翻译它们快乐的多。
在开始前,我希望统一我们的开发环境--VS2005+OgreSDK1.4.3。有两点需要注意:
一、请确认你的VS2005安装了sp1补丁包,这一点非常重要,否则你可以正确的编译Ogre程序,但你死活运行不起它们来。
二、请确认你的Ogre是合适的版本,也就是OGRE 1.4.3 SDK for Visual C++ .Net 2005(8.0)SP1,你可以从http://www.ogre3d.org/index.php?option=com_content &task=view&id=411&Itemid=131免费获得。
创建你的第一个Ogre应用程序
现在,对表之后,行动开始。哦,等一下,忘了给你们发枪了。请到http://ogreconglo.sourceforge.net/phpBB2/viewtopic .php?p=4领取枪械。是Ogre产的Ogre Application Wizard,不要着急,人人都有。把它解压到合适的位置,我推荐的位置当然是OgreSDK目录下了,然后运行里面的VC8_Setup.js安装。兄弟们,准备好了吗?现在行动真的要开始了。
打开vs2005,新建一个项目,"文件"->"新建"->"项目"->"Visual C++",在"Visual Studio已安装的模板"选择"OGRE SDK Application"。设置好工程名和存储路径后点"确定"按钮。
弹出了向导,选项保持默认就好了,点"finish"完成。
是不是个Win32项目的向导一样简单?下面按F7编译一下。
如果没有操作失误的话,会得到这样的结果
------ 已启动生成: 项目: test1, 配置: Debug Win32 ------
正在编译...
test1.cpp
正在编译资源...
正在编译资源清单...
正在链接...
正在嵌入清单...
Copying exe to samples bin directory ...
已复制 1 个文件。
生成日志保存在"file://d:GameDevelop est1 est1objDebugBuildLog.htm"
test1 - 0 个错误,0 个警告
========== 生成: 1 已成功, 0 已失败, 0 最新, 0 已跳过 ==========
运行却会出现如图的错误,缺少相应的文件,运行不起来。一种解决办法是把缺少的文件复制过来,但你必须知道需要什么文件,不适合新手。另一种方法是,你注意到"Copying exe to samples bin directory ..."一句了吗?EXE文件拷贝到哪里去了?拷贝到"\OgreSDK\bin\debug"中去了,找到了吗?运行试试,成功了吧。
揭开向导的面纱
你可能在想Ogre Application Wizard(之后简称OAW)到底做了什么呢?就像当初我使用Win32应用程序向导创建了那个HelloWorld之后想的一样。其实OAW只做了两件事,一是创建了几个源文件,另一个是设置了IDE的参数,这也是最重要的一步。下面我们来手动做一次OAW做的事情,以便加深印象,为了以后的方便又一小部分操作是不同的。
关闭刚才的解决方案,新建一个项目,"文件"->"新建"->"项目"->"Visual C++"->"Win32",在"Visual Studio已安装的模板"选择"Win32项目"。设置好工程名和存储路径后点"确定"按钮。(我用的工程名和解决方案名都是test2,路径名为D:\GameDevelop)
在向导的"应用程序设置"中选择"Windows应用程序"和"空项目",点击完成。
除了几个工程文件,向导没再多做任何事情。为了这个项目的独立性与方便性,我们还要复制"\OgreSDK"下的"\bin"和"\media"到"D:\GameDevelop\test2"里,并创建"include"、"src"和"scripts",这样你在"D:\GameDevelop\test2"下将看到6个文件夹。
然后创建一个"SampleApp.cpp",保存路径为"D:\GameDevelop\test2\src",内容如下:
#include "ExampleApplication.h"
class TutorialApplication : public ExampleApplication
{
protected:
public:
TutorialApplication()
{
}
~TutorialApplication()
{
}
protected:
void createScene(void)
{
}
};
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
#define WIN32_LEAN_AND_MEAN
#include "windows.h"
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )
#else
int main(int argc, char **argv)
#endif
{
// Create application object
TutorialApplication app;
try {
app.go();
} catch( Exception& e ) {
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
MessageBoxA( NULL, e.getFullDescription().c_str(), "An exception has occurred!", MB_OK | MB_ICONERROR | MB_TASKMODAL);
#else
fprintf(stderr, "An exception has occurred: %s ",
e.getFullDescription().c_str());
#endif
}
return 0;
}
保存,按F7编译一下。
------ 已启动生成: 项目: test2, 配置: Debug Win32 ------
正在编译...
SampleApp.cpp
d:gamedevelop est2srcsampleapp.cpp(1) : fatal error C1083: 无法打开包括文件:"ExampleApplication.h": No such file or directory
生成日志保存在"file://d:GameDevelop est2 est2DebugBuildLog.htm"
test2 - 1 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========
出错了,找不到"ExampleApplication.h"。其中的"ExampleApplication"又是什么呢?它是Ogre为初学者设计的实例程序类(可能是个程序框架什么的,我是这么理解的),以便你可以快速的开始Ogre编程的学习。"ExampleApplication.h"在"\OgreSDK\samples\include"下。默认情况下,IDE是不会找到这里的。还记得我说过Ogre程序向导做过什么吗?对了,设置我们的IDE环境。下面我们就来一步步地把IDE设置好。
"项目"->"属性",打开"test2 属性页",展开"配置属性"。设置:
"调试"->"工作目录"为"..\bin\Debug",
"C/C++"->"常规"->"附加包含目录"中添加"..\include"、"$(OGRE_HOME)\include"和"$(OGRE_HOME)\samples\include",
"C/C++"->"代码生成"->"运行时库"为"多线程调试 DLL (/MDd)"(这个好像就是默认的),
"链接器"->"常规"->"输出文件"为"..\bin\Debug\$(ProjectName).exe",
"链接器"->"常规"->"附加库目录"中添加"$(OGRE_HOME)\lib",
"链接器"->"输入"->"附加依赖项"中添加"OgreMain_d.lib"和"OIS_d.lib"(如果是Release版则添加"OgreMain.lib"和"OIS.lib")
设置好了,再编译一次试试。如果你看懂了以上部分,并且编译通过的话,我们就可以继续了,之后的内容将修改前面这个程序来向你展示Ogre的世界。
OGRE是如何工作的
SceneManager、Entity和SceneNode是Ogre的3个基础模块。
其中SceneManager是管理者,所有显示在屏幕上的东西都由SceneManager管理。SceneManager的类型众多,随着教程的推进,你会慢慢的了解它。
Entity就是你想要渲染的物体的模型,它们使用mesh(Ogre使用的一种文件格式)描述。在Ogre中你需要注意,物体模型是与它的位置和方向分开的。这就意味着你不能直接把一个物体放在场景里,你必须将Entity和一个SceneNode相关联,而这个SceneNode包含了位置和方向的信息。
正如前面所说,SceneNode可以和Entity相关联,关联的数量是不受限制的。这有什么用处呢?例如,你想制作一个人物在屏幕上行走,同时有一圈神圣的光环绕着他。实现这个的一种方法就是先创建一个SceneNode,然后创建一个人物的Entity并与SceneNode关联。接着再创建一个光的Entity也与SceneNode关联。人和光就这么联系在一起了,简单吧。
SceneNode不光可以和Entity相关联,和其他的SceneNode关联也是允许的。这将有助于你创建结构层次复杂的游戏世界。如果你不太明白,就想想windows中的窗口,子窗口套在父窗口里,层层嵌套就组成了一个程序的界面,而这里组成的是游戏世界的一部分,可能是人、房子,也可能是些别的什么东西。
SceneNode可以有孩子(ChildSceneNode),当然也就有父亲(ParentSceneNode)。(典型的树状结构嘛)
windows中所有窗口的根都是桌面(Desktop),在Ogre中每一个SceneManager也有这样一个根(RootSceneNode),它和其他所有的SceneNode关联着。 原文地址:http://hi.baidu.com/hy469680890/blog/item/16305e13 d81e48c2c2fd7874.html
发表评论
-
面试者自述
2012-01-20 10:17 650面试者自述 2010年07月20日 You should ... -
visual studio 2008下装CGAL
2012-01-20 10:17 1034visual studio 2008下装CGAL 2010年 ... -
tomcat 优化(转)
2012-01-20 10:17 452tomcat 优化(转) 2010年08 ... -
vs2008安装boost库
2012-01-20 10:17 976vs2008安装boost库 2010年06月10日 首 ... -
掌握这些电脑知识,你可以玩的很无耻
2012-01-19 15:18 558掌握这些电脑知识,你可以玩的很无耻 2011年09月05日 ... -
lamp升级
2012-01-19 15:18 504lamp升级 2011年08月23日 -- lamp ... -
硬盘知识大全(含主板、BIOS)
2012-01-19 15:18 905硬盘知识大全(含主板、 ... -
oracle错误一览表三
2012-01-19 15:18 985oracle错误一览表三 2011年02月15日 OR ... -
WinCE驱动开发问题精华集锦
2012-01-19 15:18 560WinCE驱动开发问题精华 ... -
[转]Linux Socket编程(不限Linux)
2012-01-17 05:05 539[转]Linux Socket编程(不限L ... -
常见电脑技术问题解决方法
2012-01-17 05:05 809常见电脑技术问题解决方法 2011年05月03日 问: ... -
计算机英语词汇大全(1)
2012-01-17 05:05 566计算机英语词汇大全(1) ... -
C#面试题集锦(你值得拥有!)
2012-01-17 05:05 752C#面试题集锦(你值得拥有!) 2011年04月22日 ... -
Struts2入门碰钉记
2012-01-16 03:56 723Struts2入门碰钉记 2010年 ... -
新Eclipse插件可以快速构建主流java框架
2012-01-16 03:56 681新Eclipse插件可以快速构建主流java框架 2010年 ... -
flex安装
2012-01-16 03:56 601flex安装 2011年03月30日 需要软件: a ... -
网站开发的几种软件的搭配
2012-01-16 03:56 729网站开发的几种软件的搭配 2009年07月14日 几种不 ... -
SSH2 手工配置(转)
2012-01-16 03:56 312SSH2 手工配置(转) 2010年 ...
相关推荐
OGRE基础教程基础教程八 官网翻译版本
OGRE基础教程基础教程一 官网的翻译版本
OGRE基础教程基础教程五 官网教程的翻译版
Ogre基础教程pdf电子书 Ogre基础教程pdf电子书Ogre基础教程pdf电子书 Ogre基础教程pdf电子书 Ogre基础教程pdf电子书 Ogre基础教程pdf电子书 Ogre基础教程pdf电子书 Ogre基础教程pdf电子书
OGRE基础教程基础教程八.pdf
OGRE基础教程基础教程六 官网翻译版
OGRE基础教程基础教程七 官网翻译版
OGRE基础教程基础教程二 官网教程的翻译版
OGRE基础教程基础教程四 官网教程的翻译版
OGRE基础教程基础教程三 官网教程的翻译版
OGRE基础教程基础教程五.pdf
资源名称:Ogre、Osg三维虚拟可视化技术资料大全资源目录:【】OGRE基础教程2【】OGRE基础教程基础教程一【】OGRE基础教程基础教程七【】OGRE基础教程基础教程三【】OGRE基础教程基础教程九【】OGRE基础教程基础教程...
基础教程六 CEGUI和OGRE 基础教程七 CEGUI和OGRE II 基础教程八 多场景管理器的运用 基础教程九 Ogre的启动顺序 中级教程一 动画, 两点间移动, 和四元数基础 中级教程二 射线场景查询及基础鼠标用法 中级教程...
基础教程:出自Ogre3D 开放资源地带
这是OGRE官网基础教程7,OGRE与CEGUI的结合例程
ogre技术的入门,学习ogre的必要教材。 OGRE(面向对象的图形渲染引擎)是用C++开发的面向对象且使用灵活的3D引擎。它的目的是让开发者能更方便和直接地开发基于3D硬件设备的应用程序或游戏。引擎中的类库对更底层的...
一套基础的ogre入门教程,适用于初学者。 游戏基础教程 来自ogre3D开放教程
基础教程六 CEGUI和OGRE 基础教程七 CEGUI和OGRE II 基础教程八 多场景管理器的运用 基础教程九 Ogre的启动顺序 中级教程一 动画, 两点间移动, 和四元数基础 中级教程二 射线场景查询及基础鼠标用法 中级教程...
两本书还是不错的,ogre基础教程帮助文档,对初学者比较有帮助
一步一步教你ogre3d的配置和初级编程