【Ogre编程入门与进阶】第五章 Ogre初步

本文介绍了Ogre3D编程的入门知识,包括如何创建第一个Ogre3D程序,详细解释了通过应用程序向导和手动编写代码的两种方法。文章深入浅出地讲解了场景图、坐标系统以及平移、旋转和缩放等基本变换,旨在帮助初学者快速上手Ogre3D开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载请说明出处!

http://blog.youkuaiyun.com/zhanghua1816/article/details/8087373


在这一章中,我们会通过一些简单通俗的介绍,并结合一些例子,向读者展现一些Ogre3D简单的功能和使用方法。在这一章中,我们不会讲解太复杂的Ogre功能,笔者认为在本书的最开始介绍的过于复杂不仅会让读者一头雾水,更会让读者对Ogre的学习望而却步,所以,不用担心,我们会循序渐进的让你慢慢深入,所以读者不用担心自己一开始不能从整体上很好的把握Ogre的脉络和架构,相信你看完本章并通过本书后面的学习,会真正成为Ogre3D大家庭中的一员。

5.1开始第一个Ogre3D程序

       在我们开始制作第一个Ogre3D应用程序之前,首先我们应该学会如何建立一个简单的Ogre3D应用程序。

5.1.1建立一个简单Ogre3D程序

        建立一个Ogre3D应用程序有两种方法,一种方法是通过应用程序向导构建,应用程序向导是一个安装在Visual Studio上的插件,这个插件可以用来创建一个Ogre应用程序外壳(读者朋友可以参考我的另一篇配置Ogre环境的文章,里面有介绍怎么安装这个插件:  http://blog.youkuaiyun.com/zhanghua1816/article/details/6650509);另一种方法是通过代码,自己手动创建一个Ogre应用程序。

       方法一:通过应用程序向导构建

       这种方式比较简单,如果读者是在Visual Studio上开发Ogre3D程序,只需安装相应版本的VisualStudio插件即可。

 

笔者注:

本书所有的程序代码都是在Visual Studio 2008的环境下调试运行的,本书使用的Ogre SDK的版本是1-7-2,因此,我们要安装的应用程序向导插件的版本是Ogre_VC9_AppWizard_1.7.2_2。

 

        相信大家对MFC已经不会陌生,通过Visual Studio 我们可以深刻的体会到建立一个MFC应用程序是多么的便利,你只需一直点击下一步,就可以实现一个功能不弱的Windows窗口程序。同样,利用应用程序向导建立Ogre3D程序,也同样具备MFC这样的便利之处,下面我们就详细的介绍这种方法:

       你可以针对自己使用的IDE(Integrated Development,集成开发环境)来选择对应的Ogre应用程序向导插件,由于它的安装非常简单,我们相信你只要得到这个插件就能安装成功,下面我们简要介绍一下它的使用方法:

       第一步,安装插件(根据自己对应的IDE 版本而定);

       第二步,配置OGRE_HOME环境变量,右键点击我的电脑——属性——高级——环境变量——新建,输入OGRE_HOME,和你安装Ogre的根目录即可完成此环境变量的配置。在此,笔者将Ogre安装在了D:\Ogre\Ogre_scr_v1-7-2目录下,因此这里要在“变量值”处输入D:\Ogre\Ogre_scr_v1-7-2,读者应根据自己的Ogre安装根目录来具体设定这个“变量值”,如图5-1;


图5-1

 

第三步,打开Visual Studio 2008,选择菜单栏中的文件——新建——项目,如果你看到下图所示的应用程序图标,说明你的Ogre应用程序向导已经安装成功了,如图5-2:


图5-2

 

看到上面这个界面后,选择OGRE Application,然后填入工程名称,如:MyOgre05,点击确定——下一步——完成即可。

笔者注:

点击完下一步之后会出现如图5-3所示界面:

图5-3

这里,我们选择第一个Standard application,如果读者在这里不清楚这里的每个选项有什么功能,可以尝试一下,其实很简单,当你选择不同的选项时,它实际上代表了不同的Ogre应用程序模板,默认情况下,Ogre给我们提供了一个基类,然后构建一个派生类来实现最简单的一些功能,而如果我们选择第二个选项 One class Minimal application,那么所有的功能在最开始都会整合到一个类中,其他的选项也同理。

第四部,编译运行程序,你将会看到我们没有编写一行代码,应用程序已经给我们实现了一个较为不错的3D效果,你如果想退出当前应用程序,可以按Esc键,如图5-4。

图5-4

 

方法二:自己手动编写代码实现

有读者可能会问,既然Ogre3D有了这样方便的一个插件,为什么我们还要自己手动编写这些重复的代码呢,我们是不是在重复造轮子?其实不然,恰恰相反,我们自己手动编写代码,正是希望让通过亲自动手的方式,更深入的了解一下这个应用程序向导背后到底做了什么,以至于我们没有编写任何代码,Ogre就可以创建了上面这么多内容。

笔者注:

在我们自己编写代码实现之前,最好读者需要了解一些Windows编程的基础知识,比如说什么是WinMain函数,什么是回调函数,笔者这里就不再赘述,因为了解这些会对你今后开发Ogre程序有极大的帮助。

第一步,我们打开vs2008,新建一个类型为“Win32项目”的应用程序,取名为MyOgre05。(注意在后面选择应用程序类型的时候你可以选择一个空项目,如图5-5);

图5-5

 

第二步,在MyOgre05工程中的解决方案“源文件”处,添加一个C++源文件,命名为main.cpp文件,当然,这个名字可以随意取,然后在main.cpp文件中加入我们的WinMain函数,代码如下;

示例程序5-1

#include <windows.h>

 

INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )

{

     return 0;

}

 

笔者注:

WinMain函数是Windows32项目的入口函数,如果你习惯于使用控制台程序,你同样可以建立一个控制台程序,这里相应的就要将WinMain函数改成main函数,同样可以实现我们需要的功能。

 

 

第三步,添加头文件"ExampleApplication.h"。在MyOgre05的解决方案“头文件”处右键选择添加——现有项,如图5-6所示:

图5-6

在弹出的对话框中,选择ExampleApplication.h文件,并点击确定。ExampleApplication.h在Ogre安装根目录下的include文件夹中。

第四步,在菜单栏依次点击项目——属性——配置属性——链接器——输入中,“附加依赖项”处:添加OgreMain_d.lib和 OIS_d.lib;

如图5-7所示:

图5-7

 

笔者注:

在编译程序之前,请确保你正确配置了Ogre3D的各个包含目录和库目录,否则会遇到找不到头文件或者其它类似的错误提示,具体配置方法请参“Ogre3D配置”一节或者参考我的另一篇文章http://blog.youkuaiyun.com/zhanghua1816/article/details/6650509

 

第五步,在main.cpp中添加一个新类Example1,并重写createScene()函数如下(注意,读者还应该将ExampleApplication.h文件也包含进来):

#include "ExampleApplication.h"//添加在程序的开头

 

class Example1 : public ExampleApplication

{

public:

     void createScene()

     {

 

     }

protected:

private:

};


第六步,在WinMain函数中创建一个Example1类的实例,并调用其go()函数;

第七步,把我们应用程序的目录设到Ogre目录下,在菜单栏依次点击项目——属性——配置属性——调试,把工作目录改为:(Ogre3D安装根目录)\bin\debug,如图5-8所示:


图5-8

 

由此,一个简单的Ogre3D应用程序到此完成,下面列出整个工程的实现代码:

#include <windows.h>

#include "ExampleApplication.h"

 

class Example1 : public ExampleApplication

{

public:

     void createScene()

     {

     }

protected:

private:

};

 

INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )

{

     Example1 app;

     app.go();

     return 0;

}

编译运行上面的程序,你将会发现成功运行后呈现给我们的仅仅是一个黑屏的窗口。虽然我们的程序里什么都没有,但我们现在的确完成了一个Ogre程序的简单编写,读者不用着急,随后的章节我们会逐步的向我们的应用程序中添枝加叶,让我们的应用真正变成参天大树。你如果想退出当前应用程序,可以按Esc键。

 

笔者注:

上面我们建立的这个工程虽然很简单,但请读者注意,我们这里只是建立了一个最基本的模板,今后我们很多的程序实例都会建立在此模板之上,如果读者不想每次建立新工程的时候都重复的做这些工作,读者可以备份一下上面的这个模板,以后可以直接拿来使用。


代码分析:

通过前面两种方式,读者或许已经发现Ogre3D应用程序向导自建的应用程序模板的功能似乎更强些,而我们自己手动编写的代码似乎功能比较弱,但笔者不这样认为,当读者作为初学者的时候,前面的两种构建Ogre应用的方式我们都可以使用,但是一旦我们对Ogre的整个流程比较熟悉的时候,笔者建议还是使用后者,因为随着你的使用你会发现使用应用程序向导还是会给我们带还很多不便的,笔者先在这里不做深入研讨,我们会在之后的章节利用第二章方法构建我们的每个工程,我们会对第二种方法做一些修改。

笔者注(这么多笔者注啊,好烦人~~~呵呵,抱歉,只是想让大家多了解点东西~~~):

看到这里,读者的脑子里可能有诸多疑问,请读者不要心急,现在只是开始,您所有的疑问我们将会很快一一揭晓。

问题一:Ogre应用程序向导到底帮助我们做了什么?

我们先来看一下Ogre应用程序向导给我们生成了哪些文件,看图5-9:

OGRE(O-O Graphics Rendering Engine) 使用指南________________________________________________________________1 作者_________________________________________________________________________ 6 序____________________________________________________________________________7 教程的目的_________________________________________________________________ 7 读者要求___________________________________________________________________ 7 教程的由来_________________________________________________________________ 7 OGRE简介___________________________________________________________________ 8 OGRE特点_________________________________________________________________ 8 效率特性__________________________________________________________________8 平台和3D API 支持________________________________________________________ 8 网格Meshes_______________________________________________________________ 8 场景特性__________________________________________________________________9 特效______________________________________________________________________9 其它特性__________________________________________________________________9 OGRE中的模块_____________________________________________________________ 9 OgreMain 模块____________________________________________________________ 10 SDL 平台管理模块________________________________________________________ 11 Win32 平台管理模块_______________________________________________________11 BSP 场景管理_____________________________________________________________11 文件系统插件_____________________________________________________________11 GuiElement 插件__________________________________________________________ 11 OctreeSceneManager 插件___________________________________________________ 11 ParticleFX 插件___________________________________________________________ 12 Direct3D7 渲染系统插件____________________________________________________12 Direct3D8 渲染系统插件____________________________________________________12 SDL 渲染系统插件________________________________________________________ 12 3ds2oof 工具______________________________________________________________12 3Dstudio Max 导出器_______________________________________________________12 位图字体创建工具_________________________________________________________12 Milkshape3D 导出器_______________________________________________________ 12 Python 接口______________________________________________________________ 13 XML 转换器______________________________________________________________13
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值