一、切换着色器效果哪种方式更好?1.使用大型着色器程序,并在着色器程序中统一使用if/else子句来使用差异效果。2.在调用之间切换程序。
二、用大纹理好还是用几个小纹理好?并且上传纹理成本很贵,绑定纹理怎么样?
一、切换着色器效果哪种方式更好?1.使用大型着色器程序,并在着色器程序中统一使用if/else子句来使用差异效果。2.在调用之间切换程序。
二、用大纹理好还是用几个小纹理好?并且上传纹理成本很贵,绑定纹理怎么样?
好吧,最好写一些性能测试并尝试一下,但总的来说。
特别是片段着色器每帧执行数百万次。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