翻译《real-time 3d terrain engines using C++ and DX9 》(4)

翻译 2007年09月13日 12:37:00
 
管理共享数据资源
       引擎包含集中不同的共享数据。这些资源表示的数据在多人游戏中访问和共享。例子包括纹理,顶点缓存,索引缓存和渲染方法。事实上,许多共享资源都是依赖于显卡,因为他们使用显存作为他们存储的一部分。这些设备的管理器需要访问这些依赖资源。例如,显示管理器需要访问所有纹理,顶点和索引缓存这样它能够处理那些显示设备失去和重新得到的接口的情况。
       这需要一些关键的类。首先,我们为所有共享资源定义一个基类,cResourcePoolItem.他提供了一个外部访问方法可以使用的通用接口。这些包括基本的创建和销毁这些资源,启用和禁用共享资源,把它作为流输入和输出磁盘的接口函数。这些基类中的成员函数被定义为纯虚函数,强制所有派生类提供基于这些函数的实现。这个虚接口允许外部访问者,例如一个设备管理器去影响一个基于cResourcePoolItem类的对象的集合而不需要知道他们代表的具体类型。
       带着同样的想法,我们增加一个类叫做cResourcePool。这个类是cDatePool的一个扩展,设计来处理基于cResourcePoolItem类的兑现,提供额外的方法来操作这些资源。就像cResourcePoolItem类,cResourcePool类提供一个范围者可以使用的基本接口。假定所有的cResourcePoolItem对象包含一个标准的接口方法集合,cResourcePool提供增加成员函数在全部池成员中实现迭代并且传递数据给这些函数。对外部访问者来说,这提供了重要的对共享数据类型的处理。例如,显卡管理器可以使用这个类型的接口去快速的启用和禁用一个cDatePool对象中的所有纹理。
       共享资源通常通过一个文字字符串定义。例如,对纹理来说,这个字符串可能是磁盘上源图像的实际路径名。除了提供重要的操作方法,cResourcePool也存储这些资源名字字符串的查找表。这个给访问者提供一个通过名字查找共享资源对象的方法。使用标准模板库(STL)的map容器类来建立这个资源名字的“电话本”,并且提供访问和查找方法来定位数据池中的每个成员。
       最后,cResourcePoolManager单实例类(singleton class)提供了所有贡献资源池的存储仓库。每个cResourcePool可以在cResourcePoolManager对象中创建和注册,同时索引值定义了数据池中保存的资源类型和它所属于的家族(family)。这些索引可以在cResourcePoolManger头文件的全局枚举中找到。一个枚举定义了所有资源可能属于的家族(family)(音频的,视频的,等等)。附加的枚举定义了每个家族包含的资源类型。
  
       联合的家族和类型索引被存储为一个32位值的16位中。这个值,叫做cResourceCode,被用于唯一的定义管理者中的所有资源对象类型。当新的资源数据池背简历,他们在管理器中注册他们自己,提供一个cResourceCode对象来唯一的标识他们自己。外部的访问者可以通过使用合适的cResourceCode从管理器中请求cResourcePool接口来得到对他们的访问。
       当我们建立实际的引擎资源和管理器的时候,这些资源类的功能将变得更加明显。现在,参考配套光盘上资源相关的源代码文件来进一步探索他们的功能。资源文件在被张的开头列出。清单4.3是这些资源对象怎样被创建和使用的例子。
 

相关文章推荐

GAIA地形引擎源代码阅读 <一>

对任何做游戏开发的人来说,我想他们的目标都是能自己研发出一款引擎

翻译《real-time 3d terrain engines using C++ and DX9 》(1)

系列文章 all by G.I.N ~oo~心血来潮啊,决定要翻译《real-time 3D terrain engines using C++ and DX9》,希望多广大的游戏爱好者有所帮助。首先...

翻译《real-time 3d terrain engines using C++ and DX9 》(2)

主程序(the application host)       为了添加我们自己的程序控制层,我们将以Direct3d sample framewrok提供类为基础来简历我们自己的类。框架类CD3Da...

翻译《real-time 3d terrain engines using C++ and DX9 》(3)

cGameHost包含的一个关键管理对象就是资源管理器(resource manager).我们的程序使用他自己的管理系统来管理我们将要创建的设备。这个资源管理系统的根,cResourcePoolMa...

unity3d Human skin real time rendering with blood and water drop effect真实模拟人皮实时渲染之血液和水珠掉落效果

在之前人皮肤实时渲染的基础之上添加了血液覆盖效果(blood effect)和水珠滴落效果
  • wolf96
  • wolf96
  • 2015-03-22 14:21
  • 3320

Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural

Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neur...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)