TinyRenderEngine------ResourceManager

 

ResouceManager 模块负责资源的创建和管理。在图形系统中,需要用到很多资源,比如mesh模型,材质(Material), 纹理(Texture)等等。 下面详细介绍一下ResourceManager模块里几个主要的部分。 

HardwareBufferManager

HardwareBufferManager负责创建和管理HardwareBuffer HardwareBuffer是指GPU 中的buffer。最常见的就是VertexBufferIndexBuffer。此外,VertexBuffer需要一个顶点的格式声明(VertexDeclaration) 来定义Vertex的数据格式和布局(比如每个顶点有哪些元素(位置,法向量等),元素的布局是怎么样)VertexBuffer中的一部分或者全部可以组成一个VertexData对象,它通过指定VertexBuffer,对应的VertexDeclaration 起始顶点位置和包含顶点个数来定义。 类似的,IndexData的一部分或全部可以组成一个IndexData对象。 VertexDataIndexData是组成Mesh的元素。下面分别是HardwareBufferHardwareBufferManger的类关系图:

            

 

 

 

                          

 

HardwareBufferManager 提供的接口:

1) 创建VertexBuffer

2) 创建IndexBuffer

3) 创建顶点格式声明(VertexDelaration) 

MeshManager

Mesh就是实体(Entity)的网格模型,描述了实体的形状。通常mesh模型是美工人员通过3D建模工具(3dmax, maya )创建出来并保存到成特定的文件格式(例如.3ds) MeshManager的职责就是载入解析模型文件并生成Mesh对象。 目前的MeshManager使用了OGRE.xmlmesh文件格式。 XMLMeshSerializer负责mesh文件的载入。 每个Mesh可以包含一个或多个SubMeshSubMeshMesh的最小组织单元,同时也是最小的绘制单元(RenderSystem部分会讲到) 它包含了一份VertexData和一份IndexData下图是Mesh的类图:

                        

MeshManager 提供的接口:

1) mesh文件中载入Mesh对象 

MaterialManager

Material定义了实体的显示属性。 狭义的Material指的是物体对光照的反射系数(漫反射,镜面反射等) 现在随着图形管线的可编程性越来越高,通过不同的shader就可以达到不同的效果,而不再局限于光照反射系数和纹理贴图了。所以在TinyRenderEngine中,Material被定义成广义上的定义物体显示效果的对象,它包括Shader,纹理以及一系列Shader的参数等。目前TinyRenderEngine中的Material实现就是D3D中的Effect以及其中的参数变量。

 MaterialManager 提供的接口:

1)  创建Material 

TextureManager [not completed yet]

由于时间关系,还没有完成对Texture的支持。 待加...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值