用Ogre画三角形

来源:互联网 发布:刷微信二维码关注软件 编辑:程序博客网 时间:2024/05/21 06:23

用Ogre画三角形

         成熟图像引擎往往对底层操作做了层层封装,用户或许能轻易地将复杂模型加入到游戏里,却在画一个三角形时摸不着头脑。本文阐述如何在Ogre里画三角形,如果有些许DirectX或者OpenGL的基础知识,理解起来会更加容易。

         Ogre用树结构来组织场景,所有希望被遍历到的实体都需要挂接在树节点下,此类有挂接能力的实体需要继承自MovableObject类;而如果实体想被赋予渲染的能力,则要继承Renderable类。如此一来,我们的三角形类如下:

接下来要做的基本上就是填充两个父类中的十多个纯虚方法,这里我们仅挑出最主要的几个进行说明。

1. 来自MovableObject的_updateRenderQueue()函数。它在场景遍历到本实体时被调用,你可以选择此时将待渲染的对象加入到渲染队列中,由于我们的三角形本身即继承自Renderable,所以我们将自己加入到队列里:

2. 接着是来自Renderable的getRenderOperation()函数。它在渲染队列稍后遍历每一个待渲单位时被调用,你需要选择这个时刻把渲染相关的数据(顶点数据、组织方式、数目、索引等等)以RenderOperation数据结构的形式提交给引擎。可见RenderOperation决定了你将渲染出何种东西,其实本文展示的核心即是对RenderOperation的定制。

我们在初始化三角形时构建RenderOperation相关数据:

 

         然后在getRenderOperation()函数中将其提交上去:

3. 最后还需要提一下来自Renderable的getMaterial()函数,顾名思义,引擎籍此获知待渲物体的材质,这里我们创建一个只使用物体顶点色的材质:

之后这个材质将通过setMaterialName()函数赋给三角形以供其渲染时刻提交。

完成了以上步骤,在主构建函数里进行如下调用:

运行程序,你将看到一枚彩色的三角形。

 Ogre Triangle

         某种程度上,在3D世界里,学会了画三角形,你就学会了画任何东西。

         文章配套工程源码可移步此处下载:http://download.csdn.net/source/3562886,开发环境为VS2008+ Ogre1.7.3。

注:转载源地址
原创粉丝点击