GameBryo实例学习之七DynamicTexture

一、简介

      这个实例展示了如何使用Gamebryo的NiDynamicTexture类去动态的改变纹理数据。使用动态纹理可以用来实现所谓的“程序贴图“,程序贴图就是说不是直接从图像获得的,而是用了算法代替生成。静态程序贴图只用在加载的时候计算一次,而动态程序贴图需要在运行的过程中实时计算。
      这个例子演示了动态程序纹理,实现在Gamebryo跨平台方式,这段代码生成了一片动态的云图,通过仅有的一个绘制对象NiMeshScreenElements,整体的效果就是漂浮的层状云。
      这个例子是通过一种叫做”柏林噪声“来实现的,它是一种可以生成多维相干的噪声,而不会有任何随机闪烁的问题。
      在主机处理器上改变纹理数据,尤其是每一帧的情况下无疑消耗是很严重的,无论是在CPU周期还是内存带宽。即便如此,在NiDynamicTexture中改变纹理数据还是比在NiSourceTexture中要块,然而由于总线带宽的限制,NiDynamicTexture可能不会和NiRenderedTexture一样快。

二、解析
      FakePerlin,柏林噪声相关,Noise生成噪声值,代码至今不是很明白,然后噪声值在区域内可以平滑过渡,因为用到了插值。
      DynamicTexture,主要是创建了一张屏幕Mesh,然后通过柏林噪声填充了512*512像素的数据,最后实时更新。
      继承NiTextrue,相当于贴图的一种扩展方式,其他没有什么好说的,看了代码就会了然。
      

你可能感兴趣的:(gb)