在 OpenGL ES 2.0 中切换着色器是否会影响性能?

Nek*_*ios 4 iphone 3d opengl-es

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

#2在通道中间切换程序是否有任何性能开销,例如,如果我要渲染 100 个三角形,使用着色器 1 渲染 50 个,使用着色器 2 渲染 50 个,在使用它的任何情况下,我都会遇到性能下降吗?例如,每个三角形的交替程序是否可以更慢,还是应该更快地批处理并执行所有 50 个着色器 1 然后执行所有 50 个着色器 2?我想我是在问是否有一些内部上下文切换,或者 OpenGL ES 库是否只是指定卡上要执行的着色器程序内存的地址,如果我为每个三角形指定不同的地址并不重要。

Mat*_*gro 5

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