在OpenGL ES 2.0中,在着色器之间切换会有性能影响吗?

时间:2011-01-23 17:27:46

标签: iphone opengl-es 3d

#1 对于可以一次编译和提供的着色器程序OpenGL ES 2.0设备(iPhone / iPad)的数量/大小是否有限制?

#2 在传递过程中切换程序之间是否有任何性能开销,例如,如果我要渲染100个三角形,50个使用shader1,50使用shader2,我是否会遇到性能在使用这个的任何情况下命中?例如,它可以是每个三角形更慢的交替程序,还是应该更快批处理并完成所有50个shader1然后全部50个shader2?我想我是在询问是否有一些内部上下文切换,或者OpenGL ES库是否只指定要执行的卡上着色器程序存储器的地址,如果我以不同的方式指定每个三角形,则无关紧要。

1 个答案:

答案 0 :(得分:4)

  • 问题1,没有限制,只有系统中可用的内存量。
  • 问题2,是的,切换着色器会有性能损失,因此批量处理和最小化着色器切换可确保最佳性能。