AppleSeeker's Tech Blog
Welcome to AppleSeeker's space

正如我们所工作所使用的其它内容资源,通过允许它们加载到游戏框架中,我们将简化模型工作任务。这些模型会添加到GameHost类,作为一个模型对象字典。通过游戏的LoadContent方法,所有我们所需要的模型可以因此加载到字典中,当它们必须在屏幕上绘制时,就准备好进入字典了。

就游戏框架而言,我们可以离开,但通过添加另一个抽象基类所构建的渲染模型的目的,我们可以让我们的生活容易点。这个类称为MatrixModelObject并且来自于MatrixObjectBase类,如图所示。

image

从MatrixObjectBase类继承,意味着我们马上可以获得所有的矩阵-基础渲染属性,基于这些我们可以添加一些更多属性和方法,特别是处理模型的方法。然而,类是具体的类(非抽象类),可以直接实例化,并添加到GameObjects集合中,或可以继承来创建自定义额外游戏-特定功能类。

派生类的属性如下:
ObjectModel——由该累渲染的模型对象的引用
ObjectTexture——MatrixObjectBase类声明此属性,但由MatrixModelObject来重写,如果它没有一个纹理来明确提供查询,它尝试去从模型的纹理中去读取。一旦纹理设置到这个属性中,它将获得优先,并返回代替模型纹理,也将导致使用提供的纹理来渲染模型。

在类中的下列方法:
DrawModel——在上一篇文章中的代码中可以找到,本质上是相同代码,将使用提供的效果对象来绘制加载纹理。它首先确保一个所提供的ObjectModel,假如现在没有这类对象,会返回不需要做任何事。此外,如果一个纹理已明确由使用ObjectTexture属性的对象提供,这将用来从模型中代替纹理,允许简单定制模型纹理。
Update——重载标准的更新方法,以便效果属性可以用于前一个绘制的对象。这可以正常重载,对象属性的更新是必须的。
Draw——重载标准的绘制方法,默认设置首先调用PrepareEffect来加载所有对象设置,然后调用DrawModel来渲染加载的模型。因为这对于很多对象来说都是准确的行为,实现基类,为派生类移除必要的来实现自己的绘制重载。

在ImportingGeometry示例工程里可以看到工作的新的类。再次,代码所包含的是非常简单的,有利游戏框架来管理所有的在更新和呈现游戏这些更复杂的方面。在这个工程中,简单创建的派生类叫ImportedObject,一边它可以在每次调用更新中去改变它的旋转角度。

posted on 2012-04-13 10:35  AppleSeeker(冯峰)  阅读(330)  评论(0编辑  收藏  举报