OGRE-降服巨兽

      “伟大航路,我把世界上的一切都放在了那里,有种的话就去领取吧!”

这是OGRE中文网上的一则广告,我想,无论作为OGRE的学习者还是漫漫人生的一名旅人,这句话都是非常不错的激励语。放在这,是否能够让你隐约看到属于自己的新世界?

作为刚涉入计算机图形学以及三维渲染引擎的菜鸟,深深地被这句话激励勒,骚动的心时刻不得平静;于是乎,开始琢磨、深入学习公司平台软件的核心引擎-OGRE,至于OGRE的基础概念这里就不赘述勒,不太理解的看官们请谷哥度娘自行脑补;下面,切入正题,从配置环境开始,完成第一个实例,走进食人魔法师的世界!

采用模板搭建

首先需要安装OGRE SDK(本例采用的OGRE版本为OGRE 1.8.1 SDK for Visual C++ .Net 2010 (32-bit)),然后安装OGRE工程模板到SDK的安装目录,安装完工程模板之后,工程模板项会自动嵌入到VS2010中VC++项目模板中(类似于QT for VS);接下来,将在VS2010环境中,利用OGRE工程模板,搭建应用示例,实现食人魔法师的渲染与呈现,具体实现步骤如下:

1. 在VS2010中,新建VC++项目,采用OGRE Application工程模板,构建Standard Application Project

2. 构建完Project之后,发现VS并不能识别出ORGE中的对象,这里主要是因为工程模板中采用环境变量来配置头文件和库文件的路径,而系统环境变量中并没有进行配置;所以,这里我们需要在系统中配置环境变量OGRE_HOME : E:\OGRE学习\OGRE示例程序\OgreSDK_vc10_v1-8-1(该路径为SDK的安装目录)

3. 完成上述两个步骤后,接下来,我们将加载、渲染食人魔法师的功能代码添加到createScene()方法中,最后,编译、运行示例程序

添加到createScene()方法中的代码如下所示:

1  Ogre::Entity* ogreHead = mSceneMgr->createEntity("Head", "ogrehead.mesh");
2     Ogre::SceneNode* headNode = mSceneMgr->getRootSceneNode()->createChildSceneNode();
3     headNode->attachObject(ogreHead);
4     // Set ambient light
5     mSceneMgr->setAmbientLight(Ogre::ColourValue(0.5, 0.5, 0.5));
6     // Create a light
7     Ogre::Light* l = mSceneMgr->createLight("MainLight");
8     l->setPosition(20,80,50);

手动配置搭建

相比于工程模板,手动搭建示例程序较为繁琐、复杂一点儿,不过它的优点在于我们可以深入了解OGRE程序中编译、运行时依赖的各大插件与配置文件;本实例中采用配置属性表的方式来配置运行环境,这样我们可以实现“一次配置,多次使用”的目标,即在搭建其他OGRE程序时,只需导入该配置属性表即可实现OGRE环境的配置,具体实现步骤如下:

1. 在VS2010中,新建空的Win32控制台应用程序,在建好的Project中的属性管理器面板下的Debug | Win32文件夹下,新建属性表OgreSetting

2. 接下来,我们将在OgreSetting属性表中配置实例程序运行的环境,在配置环境中,仍需要用到环境变量ORGE_HOME,配置详细信息如下所示:

头文件附加包含目录:1) $(OGRE_HOME)\include  2) $(OGRE_HOME)\include  3) $(OGRE_HOME)\include 4) $(OGRE_HOME)\include

链接器附加库目录:1) $(OGRE_HOME)\include  2) $(OGRE_HOME)\include

链接器附加项:1) OgreMain_d.lib  2) OIS_d.lib

3. 接下来给示例程序添加功能代码就能编译、运行了吗?其实并没有,OGRE程序在运行时,还依赖于各大功能插件(诸如RenderSystem_Direct3D9等)、资源文件(如模型文件、纹理文件等),所以我们这里还需要将插件配置文件plugins_d和资源配置文件resources_d拷贝到示例工程目录和输出目录,并修改对应的路径信息,如下所示:

plugins_d :将PluginFolder=.修改为PluginFolder=E:\OGRE学习\OGRE示例程序\OgreSDK_vc10_v1-8-1\bin\debug(SDK示例程序输出目录)

resources_d : 将其中所有的../../替换为绝对路径E:/OGRE学习/OGRE示例程序/OgreSDK_vc10_v1-8-1/

4. 程序运行时会依赖于OGRE中的共享库(如cg.dll等),这里我们需要将SDK输出目录下的所有dll拷贝到程序的输出目录下,这样程序才能正常运行,想必各位看官看到这儿,不经心生疑虑,对该方法嗤之以鼻,暗骂不已,那岂不是每次构建OGRE Project时都需要拷贝那么多dll到输出目录下?为了消除大家心中的疑虑,小菜也是到处寻求解决方案,不负有心人,终于寻得一法,即只需要在环境变量Path下加上E:\OGRE学习\OGRE示例程序\OgreSDK_vc10_v1-8-1\bin\debug,程序在运行时就会自动检索、链接到该目录下的dll(具体的原理,请各位看官自行脑补哦)

5. 为了不吊大家的胃口,这里将添加实现完整食人魔战士的功能代码到createScene()方法中,最后,编译、运行示例程序

添加到createScene()方法中的代码如下所示:

1   mSceneMgr->setAmbientLight( ColourValue( 1, 1, 1 ) );
2     Entity *ent1 = mSceneMgr->createEntity("SinbadBody", "Sinbad.mesh");
3     SceneNode *node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "RobotNode" );
4     node1->attachObject( ent1 );

示例渲染成果

         

相关资源链接

OGRE SDK:http://www.ogre3d.org/download/sdk

OGRE工程模板:http://download.csdn.net/detail/sangni007/5185193

时间: 2024-10-13 09:20:24

OGRE-降服巨兽的相关文章

VS2008下QT整合OGRE

环境配置如下:VS2008 QT版本:4.8.1 OGRE版本: 1.7.4 请先配置好QT  for vs2008  : 下载QT VS2008的包,然后下个QT VS的插件 版本必须是VS2008或VS2010 不能是精简版 新建一个QT Application 新建环境变量:$(OGRE)指向你的OGRE目录, 选择:工具-选项-项目和解决方案-VC++目录 -选择包含文件下拉选项 增加 $(OGRE)\boost_1_48\boost 和 $(OGRE)\include\OGRE 选择库

【转载】OGRE 内存管理

原文:OGRE 内存管理 Ogre引擎中与内存管理相关的文件大致有以下几个(只列出头文件) OgreAlignedAllocator.h OgreMemoryAllocatedObject.h OgreMemoryAllocatorConfig.h OgreMemoryNedAlloc.h OgreMemoryNedPooling.h OgreMemoryStdAlloc.h OgreMemorySTLAllocator.h OgreMemoryTracker.h Ogre引擎的内存分配方式主要

Ogre 监听类与渲染流程

Ogre中有许多监听类,我们可以简单理解成C#中的事件,这些类作用都不小,说大点可能改变流程,说小点修改参数等,下面列举一些常用的监听类. FrameListener:由Ogre中的Root负责维护,主要针对所有RenderTarget监听 frameStarted:在一桢开始的时候,所有RenderTarget更新之前. frameRenderingQueued:所有RenderTarget更新之后,但是还没交换缓冲区.(意思屏幕上显示没变) frameEnded:所有RenderTarget

Ogre 渲染目标解析与多文本合并渲染

实现目标 因为需求,想找一个在Ogre中好用的文本显示,经过查找和一些比对.有三种方案 一利用Overlay的2D显示来达到效果. http://www.ogre3d.org/tikiwiki/tiki-index.php?page=MovableTextOverlay 二重写Renderable与MovableObject,利用对应字体查找到每个字符元素纹理坐标. http://www.ogre3d.org/tikiwiki/tiki-index.php?page=MovableText 三利

Ogre的材质创建和应用

参考:http://blog.csdn.net/butwang/article/details/5807707 参考:http://blog.csdn.net/pizi0475/article/details/6341726 参考:Ogre 3d 1.7 beginner Guide 中文版.doc Ogre材质的创建可以通过脚本或代码创建:层级 Material -〉technique -> pass -> texture_unit Ogre的材质具有动态的效果,提供有animation,r

Ogre Composition解析

Composition脚本与类型 上面是一个Composition资源.在解析时,主要是使用CompositionPass,CompositionTargetPass,CompositionTechnique,Compositor,而在渲染时,使用RenderSystemOperation,TargetOperation,CompositorInstance,CompositionChain.管理Composition用CompositionManage. Composition主要类型说明.

Axiom3D:Ogre射线与点,线,面相交,鼠标操作3维空间.

在第一篇网络分解成点,线,面.第二篇分别点以球形,线以圆柱,面分别以MergerBatch整合批次显示.因为整合批次显示后,相应的点,线,面不能以Ogre本身的射线来选取,因为整合后,以点举例,多个点显示虽然不在一起,但是是一个Mesh.Ogre本身的检测只能检测到这里,在我们这不满足要求,相应的点,线,面检测都需要自己来计算. 在讲解本文之前,先看下射线的相关生成代码,只有先明白射线如何生成,生成最后是相对什么空间. [OgreVersion( 1, 7, 2790, "Slightly di

转:Ogre的八叉树场景管理器OctreeSceneManager

上面是我绘制的一张图. 关于八叉树场景管理器主要需要关注两个类,其一是松散八叉树的数据结构Ogre::Octree,其二是八叉树场景管理器Ogre::OctreeSceneManager. 下面摘录图片中的文字: 松散八叉树的数据结构. 属性:其中mBox为其包围盒,mHalfSize定义为包围盒大小的一半.mChildren是一个大小为8的静态数组,里面保存了8个Octree指针,由八叉树场景管理器创建,由本类管理.mNodes为挂接到当前八叉树上面的八叉树场景节点,mNumNodes保存了挂

OGRE HelloWorld——MiniSample

OGRE HelloWorld--MiniSample By microsoftxiao 参考链接1:http://blog.csdn.net/zhuxiaoyang2000/article/details/6324080 参考链接2:http://blog.csdn.net/zhanghua1816/article/details/8373703 准备 需要安装 OGRE SDK 1.9 操作系统 Window 7 IDE      Visual Studio 2008 Professiona

Ogre 1.7.0,VS2005编译全过程傻瓜式教程

最近下了最新版Ogre 1.7.0,从下载到最后编译运行成功Ogre自带的Sample花了将近一下午时间. 网上有很多编译Ogre的教程,这里整理我看过的教程,加上自己的经验再详细总结一遍. 第一步:准备好如下所有东西: 1.VS2005 + SP1补丁包. 我用的是VS2005(VC8).一定要打上SP1补丁包(几百兆的那个补丁包...),否则无法编译Ogre 2.Ogre 1.7.0,官网链接https://sourceforge.net/projects/ogre/files/ogre/1