DirectX 8 Graphics常见错误

王朝other·作者佚名  2006-01-08
宽屏版  字体: |||超大  

DirectX Graphics 常见错误(节选)

Richard Huddy著, nVidia Corp.

nightmare(qingrui li)译

**他们应该出现在初始化部分

小心不要让耗时昂贵的API调用出现在效率敏感部分

- ValidateDevice()

- CreateVB()

- DestroyVB()

- Optimize()

- CreateStateBlock()

- AssembleVertexShader()

**模版缓冲,在你不需要时……

- 如果你只清除Z缓冲,系统则不得不保留模版缓冲

所以如果你用了模版缓冲,在清除Z缓冲时一同清除

- 这意味着如果你不同时清除模版缓冲,Clear()会慢一些

读写每一个像素

- 不要用画矩形来清除缓冲

**去除冗余状态变化,谁的责任?

- 驱动程序得在PURE HAL上做此工作

这样的驱动应是相当激进的

- 运行库在非PURE HAL上作此工作

但只能去掉简单的重复

- 你的程序才是最佳的地方

**过多的改变Vertex Shader或Pixel Shader

- 会迫使系统刷新状态

- 这是实实在在得昂贵的状态变化,甚至比材质变化更昂贵

- 所以确定你没有重复设定同一Shader

**DrawPrimitiveUP

- 要我说多少次,用VertexBuffer

(译者注:DrawPrimitiveUP会导致额外数据复制的开销,但简单程序用它会使程序简洁,权衡使用即可。)

**使用GDI绘文字

- 会阻塞CPU的运行直到为完成的渲染完成

- 应使用3D功能绘制文字,象D3DX那样

- 如果你的文字不是动态的

使用一个包含文字的材质贴图

**使用N-Patches

- 我不推荐这样

- 只是nVidia公司的意见

但我们坚持此立场

此技术有太多细节问题

我们认为它只是表面上吸引人

**使用W-Buffer代替Z-Buffer?

- 透视投影材质将不工作(在GeForce 1,2上)

- 并且会无法关闭透视校正

- CubeMap会失效(在GeForce 1,2上)

- 若你在用VertexShader,你仍得设置投影矩阵

**Color Key

- 使用Alpha测试,因为它更好

Color Key在DX8中已不存在

- 已不存在是对的,因为对于多重材质和双线性过滤ColorKey是变态的东西

**没有释放对象

- 通常导致下一次创建出坏的设备对象

- 使用调试库

- 记住清除前要解除选定材质

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有