|
|
DirectX 8 Graphics常见错误 |
|
|
作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站 |
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是变态的东西 **没有释放对象 - 通常导致下一次创建出坏的设备对象 - 使用调试库 - 记住清除前要解除选定材质

|
|
相关文章:相关软件: |
|