I.切换着色器效果哪种方式更好? 1.使用大的着色器程序并在着色器程序中使用统一的if / else子句来使用差异效果。 2.呼叫之间的切换程序。
II。使用大质地或使用几种小质地更好吗?并且上传纹理费用很多,绑定纹理怎么样?
答案 0 :(得分:10)
嗯,最好是编写一些性能测试并尝试一般。
特别是片段着色器每帧执行数百万次。一个1920x1080的显示器有200万像素,所以没有透支,这仍然意味着你的着色器每帧执行200万次。对于每帧执行200万次的任何事情,或者每秒1.2亿次,每秒目标60帧,更小的情况会更好。
对于纹理,mips比没有mips更快,因为GPU有纹理缓存,如果接下来需要的像素接近它先前读取的像素,它们可能已经在缓存中。如果他们很远,他们就不会在缓存中。这也意味着从纹理中随机读取特别慢。但大多数应用程序通过纹理线性地读取。
切换程序的速度足够慢,以便对使用程序的模型进行排序,以便首先绘制使用程序A的所有模型,然后使用程序B的所有模型通常比以随机顺序绘制它们更快。但是效果表现还有其他一些因素。例如,如果大型模型遮挡小型模型,最好先绘制大型模型,因为小型模型将失败深度测试(z缓冲区),并且不会为任何像素执行其片段着色器。所以这是一个权衡。您所能做的就是测试您的特定应用程序。
此外,以正确的方式进行测试也很重要。 http://updates.html5rocks.com/2012/07/How-to-measure-browser-graphics-performance