改进的通用应用程序接口(API)
并非所有的改进都会以新功能新特性的方式体现出来,用于DirectX的接口上的改进也不少,特别是对应于状态改变的情况。就目前而言,如果我们需要渲染一个场景,所有的一切都必须分割成一批批的几何结构,每一个批次的几何结构将使用同样的纹理贴图,同样的顶点缓存数据块,完全一致的着色器和转换矩阵。基本上,如果某个物体上存在着一块不同的几何结构体,那么它就需要被拿出来单独进行渲染,而这种操作会通过DirectX接口函数调用实现,或者通过显卡的驱动程序调用甚至是处理器内部的指令状态切换等来实现,无疑这样的操作将导致相当多的开销出现。其中,有部分的开销可以通过微软的操作系统与DirectX之间的接口配合当中予以减少,而这部分计划将于微软的Longhorn操作系统中实现。
另外一种减少这种转换开销的办法就是在图形芯片当中加入“栅格列举”技术。栅格列举技术首先获取一个单一的栅格,然后因应不同的转换算法、不同的纹理贴图以及不同的替换贴图列举出几个不同的实例。
#$[*106946.jpg*#栅格列举技术*#0*#0*#center*]$#
实际上,给定一个通用的输入输出模型,我们可以将所有可见的纹理以及变换矩阵放到一个数组当中,所有的着色器都可以访问这个数组,并将几何结构作为一个整批的结构提交给所有的着色器共享,然后就让着色器来确定对应于哪一个几何结构应当采用什么样的纹理以及转换矩阵。本来是由CPU来确定到底程序进行什么状态的计算,通过上述方法,状态转换的工作就交给了GPU完成,这样就大大减轻了CPU自身的负担。