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

翻译 2007年09月14日 14:52:00
 
索引缓存和顶点缓存
       索引缓存和顶点缓存资源在例子引擎中使用得非常频繁,并且把他们作为独立资源是很有用的。对我们引擎的大部分数据来说,在那些传统模型不提供索引和顶点缓存的时候保留他们然后在某个时候覆盖整个模型符合我们的基本要求。索引和顶点缓存对于动态数据特别有用,当使用设备依赖资源的时候他们必须被很小心的处理。使用动态顶点和索引缓存使我们能够随时建立几何体或者在CPU上动画已经存在的物体。在我们构建地形引擎的时候,我们使用这两种办法。
       澄清下,我们所说的动态(dynamic)意味着完全代替。锁定一个顶点或索引缓存来改变一些随机的值将在大多数显卡上产生交错的糟糕的表现。因此我们在我们的接口中对这些资源不支持这种行为。在我们的引擎中,我们在每次需要更新的时候将整个动态缓存全部替代。这让驱动能够维护一个单方向的动态数据。一旦数据背传送到显卡,将不再试着将数据读入系统内存去更新某些特殊值。
       类对象cVertexBuffer和cIndexBuffer提供我们的缓存需要的基本操作。这些对象同时包含我们的常规缓存和动态缓存。为了支持动态(可以认为是代替)缓存数据,我们使用一个NVIDIA和Microsoft共同认可的最好的方法来更新动态数据。
       这个函数使用一个特大的缓存来存放动态数据。例如,如果你的动态数据由10个顶点组成,你将会创建一个能够容纳100个数据的动态缓存。利用这个大空间,你可以每次只使用10个顶点数据。在第一帧,你使用顶点0~9,索引10~19在第二帧被使用,然后继续下去。当你使用完所有的空间,整个缓存的内容都会被销毁,然后从0号顶点开始处理。这个滑动窗口计划(sliding window scheme)被认为使用起来是很友好的,因为它能导致最少数目的直接内存访问(Direct Memory Access ,DMA)操作被打断。清单4.5展示了基于在Microsoft DirectX9 Developer FQA中列出的算法伪码。

 

相关文章推荐

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

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

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...

unity3d Human skin real time rendering plus 真实模拟人皮实时渲染 plus篇

最近逃课做游戏,逃的有几门都要停考了,呵呵呵,百忙之中不忘超炒冷饭,感觉之前的人皮效果还是不够好,又改进了一些东西 首先上图 放大看细节 显而易见的比上次的效果要好很多,此次我把模型用3dmax进行了...
  • wolf96
  • wolf96
  • 2015-05-15 08:26
  • 2429
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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