优化3D图形渲染通道负载
2006-04-03 09:47:20 来源:WEB开发网18.如果可能, 尽量使用vertex shader来代替pixel shader.将计算从逐象素变成逐顶点。
19.尽量降低贴图的大小.过大的贴图可能造成贴图cache过载, 从而导致贴图cache命中降低.过大的贴图会导致显存过载, 这时候贴图是从系统内存中取的。
20.只要可能就用16位色的贴图, 如环境贴图或者shadow map.它们用32位色的贴图实在是浪费。
21.考虑使用DXT 贴图压缩。
22.如果可能,使用简单的贴图过滤或者mip map, 除非必要否则尽量不要使用三线过滤和各项异性过滤. light map 和 环境贴图基本上都不需要使用它们。
23.只有真正需要修改的贴图才使用Dynamic, 并且使用DISCRAD和WRITEONLY来lock。
24.太多的帧缓冲读写可以考虑关闭Z-Writes如有些多pass的渲染中的后续pass或者粒子系统等半透明几何物体(如果可以)。
25.可能的话尽量使用alpha test代替alpha blending。
26.如果不需要stencil buffer就尽量使用16位的Z buffer。
27.减小RenderTarget 贴图的大小, 如shadow map 环境贴图. 可能根本不需要那么大效果就很好。
28.Stencil 和 Z buffer 尽量一起clear. 他们本来就是一块缓冲。
29.尽量减少渲染状态的切换, 尽量一次画尽可能多的多边形。(根据显卡性能决定最多画多少, 不过一般再多也不会多到哪里去。 除非你根本不需要贴图和渲染状态的切换)。
30.尽量使用shader来代替Fixed Pipeline。
31.尽量使用shader来实现来取代Multipass渲染效果。
32.尽量优先先建立重要的资源, 如Render target, shaders, 贴图, VB, IB等等.以免显存过载的时候它们被创建到系统内存中。
33.坚决不要在渲染循环中调用创建资源。
34.按照shader和贴图分组后再渲染.先按照shaders分组再按贴图。
35.Color Stencil Z buffer尽量在一次Clear调用中清除。
36.一个Vertex buffer 的大小在2M-4M之间最好。(中国软件)
更多精彩
赞助商链接