您的位置:首页 > 其它

【Ogre开发】之二:创建自己的第一个Ogre程序

2013-08-04 12:16 204 查看

创建自己的第一个Ogre程序





本章由cowboylym(酒劍仙采葡萄)编写,转载请注明出处。 
作者:酒劍仙采葡萄    邮箱: cowboylym@163.com  

从这一章起我们就进入了Ogre基础教程的学习。由于Ogre的官方教程只有英文的,再加上哥那蹩脚的英语,所以讲的肯定会有纰漏的 请大家务必要及时的指正我,只有不断的修缮才能是文章更加的严谨到位,你们的批评和鼓励将是我坚持写下去的动力。

 

首先,这个是官方的教程地址:http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Tutorials有兴趣的可以去看一下。

 

让我感到很新奇的是,教程的开篇 并没有去对Ogre中的API先进行一个整体的概述,而是开门见山的,为我们提供了一个封装好的一个教程类TutorialApplication,里面提供了一个创建场景的接口TutorialApplication::createScene

供我们使用。然后通过如何创建一个食人魔(Ogre)头像实体来将课程陆续的铺展开来。包括:环境光,光源,场景节点,相机等等。

 

好了废话不多说,让我们奏起。

 

首先,我们要先下载这个教程类:http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Ogre+Wiki+Tutorial+Framework有windows和linux两个版本各取所需吧。这里我使用windows版的。

 

紧接着我们vs2012创建一个空项目。然后将刚才下载下来压缩包解压。把里面的4个文件加载进我们的项目中去。好了说到这里我要讲个题外话。作为一名优秀的程序员,我们必须要把我们的项目文件夹打理的井井有条。虽然可能有点花时间但真的是一劳永逸啊。首先我们肯定要有include和src这两个文件夹。分别放我们的头文件和源文件。当然还有lib bin debug release 等等目录的管理 因为这些不是本文的主旨 所以我在这里就不加赘述了。大家可以多看看一些经典的源代码看看
大师是怎么管理他们的项目的。

 

好了我们将那四个文件加载到项目以后。先不忙着配置编译环境,我们直接编一下看看会报什么错。有人会问为什么不先配环境然后再编。我想说从失败中找到真相比你直接真相对你的印象会来的更深刻。



这里我编译出两个错误,很明显是没有配置包含文件的目录。我们打开项目属性面板将vc++目录下的包含目录中加上 头文件所在的文件夹路径 如下图:



这里我建议使用相对路径原因很简单为使自己的工程在别人的电脑也能顺利的跑起来而不需要重新配置环境。我们可以使用vs自带宏来表示一些特定的路径 比如我这里用的$(ProjectDir)表示的就是工程文件所在的文件夹位后面在接一个inc就代表了我头文件所在的路径。因为我的inc目录建在工程文件所在的文件夹下的。配置完之后继续编译。你会看到两个关于OgreCamera.h头文件的错误。解决方法同上。我们只需要将Ogre库的include目录也配置进去就行了。我们将ogre_src_v1-8-1\include以及ogre_src_v1-8-1\SDK\include\OGRE加入,之后编译还会报一个OIS(OIS具体干嘛的目前还不知道)的头文件路径错误我们也配一下位置在ogre_src_v1-8-1\SDK\include\OIS,好了都配置完以后。编译,有的人可能会报这样的错



这个是宽字符的问题,具体请看windows程序设计第二章。处理办法就是将MessageBox函数改成MessageBoxA就行了。好了别以为这样就大功告成了,你编译之后还会发现一堆乱七八糟的错误。别慌,这是因为我们没有配置静态库,具体方法我就不详细讲了,只讲一下我们要用到OgreMain_d.lib个OIS_d.lib两个库文件他们放在ogre_src_v1-8-1\SDK\lib\Debug下面。注意还有在属性->连接器->附加依赖项里加入这两个库名。OK编译通过。好了现在我们点击运行。不错意外会报动态链接库的错误,有人会说
这不是废话么,好吧 我这个是面向零基础的教程。于是我们到ogre_src_v1-8-1\bin\Debug 下面找到OgreMain_d.dll和OIS.dll把他们加到我们编译出的exe文件目录下面。好吧我承认这个环境搭建确实很烦人啊。不出意外你接下来会碰到这个错误



看这个文件名应该是Ogre库所需要用到的资源配置文件,我们可以在ogre_src_v1-8-1\bin\Debug目录下找到它,然后将他拷贝到我们的工作目录下,记住是工作目录下。好奇的我打开浏览了一下这个配置文件。



大概是一些所需的资源目录吧。具体作用现在先不用管。

好了当我们再次运行程序时候OK应该不会再报什么错了。你会看到下面这个对话框:



当你点击OK的时候他会提示你选择renderingsystem(渲染系统)。这是由于Ogre其实也是基于底层(例如D3D、Opengl)的一个封装。我们需要加载渲染插件。方法很简单我们将ogre_src_v1-8-1\bin\Debug目录下的plugins_d.cfg文件拷贝到工作目录下面。



里面设置了很多插件我们要将这些插件一一加载到项目中去,这些插件文件都在ogre_src_v1-8-1\bin\Debug下面 我们可以按照plugins_d.cfg中涉及到的插件一一拷贝到我们的工作目录下。完成后再次运行。在Rendering System选择对话框中 我们任选一个D3D或者opengl都可以。点击OK。

 

好了最终你会看到下面的Ogre窗口。为什么里面黑乎乎的啥都没有?因为我们还没有往里面放任何东西。左下角是一些参数:平均帧数,最好、最差帧什么的。



接下来我们放一个食人魔头像进去。

 

我们在自己的项目中找到TutorialApplication::createScene的定义,然后插入如下代码

void TutorialApplication::createScene(void)
{
// create your scene here :)
// Set the scene's ambient light
mSceneMgr->setAmbientLight(Ogre::ColourValue(0.5f, 0.5f, 0.5f));

// Create an Entity
Ogre::Entity* ogreHead = mSceneMgr->createEntity("Head", "ogrehead.mesh");

// Create a SceneNode and attach the Entity to it
Ogre::SceneNode* headNode = mSceneMgr->getRootSceneNode()->createChildScene
a835
Node("HeadNode");
headNode->attachObject(ogreHead);

// Create a Light and set its position
Ogre::Light* light = mSceneMgr->createLight("MainLight");
light->setPosition(20.0f, 80.0f, 50.0f);
}



OK如你所见展现在你面前的就是Ogre的吉祥物食人魔。。。(老外的审美真的不敢恭维啊)。

顺带吐槽一下,我 草泥马 草泥马 草泥马 老子以后再也不坐第二排 看3D了《环太平洋》 看的哥 心中有千万头草泥马 狂奔而过啊 。。。。。。。。。
 
 
好了这个吉祥物是怎么放进去的呢,且听下回分解。
 
To be continued…

 
 
                                                                                                                                                                                                                             
                                                               ————貳零壹叁 年 捌月 肆 日
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  OGRE