OpenGL ES 2.0中的着色器之间切换性能是否有所下降?

问题描述:

#1 OpenGL ES 2.0设备(iPhone/iPad)可以同时编译和提供多少个/大小的着色器程序是否有限制?OpenGL ES 2.0中的着色器之间切换性能是否有所下降?

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

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