来源:GameRes
\N近来有朋友问起,如何有效向显卡询问3D加速能力,问题是这样的:
为了简化渲染步骤,同时能在大多的显卡上实现程序,即使目标显卡有VS,PS模块,程序也只是使用固定渲染流水线,虽然VS,PS使程序渲染更加高效和简单。也不打算设计两套渲染模式。(这里说的固定渲染流水线是硬件T&L)
\N
\N这个想法其实是错误的,有Shader的显卡不一定支持固定渲染流水线的硬件加速。
\N有点奇怪,是吧。
Shader(vs,ps)和T&L其实是两回事,在显卡硬件里面它们是不同的硬件模块,就是说有T&L不一定有Shader(很普遍的情况,很多老显卡就不支持Shader),但是到了现在,已经有显卡是支持Shader而不支持硬件T&L。
Intel 的GMA950,GMA900就是这种特殊的例子,GMA950甚至支持Shader Mode 3.0,但是却不支持固定流水线的渲染硬件加速 (T&L)。这样设计硬件的好处当然是节省材料和设计难度。却苦了程序员。
Intel 原文对GMA950是这样描述的:High Performance 3D
Microsoft* DirectX* 9 Vertex Shader 3.0 and Transform and Lighting supported in software through highly optimized Processor Specific Geometry Pipeline (PSGP)
将来或者会出现更多这样的显卡,这个也是DirectX 10去掉固定渲染线带来的小麻烦。
现在和以后,我们为了达到最大硬件兼容性,反而要首先考虑用Shader 编写程序。