WebGL - gl.useProgram()是一个开销较大的调用吗?

4
我想知道调用此API方法加载着色器程序是否昂贵?我正在考虑在我的3D场景中为每个对象调用此方法。
gl.useProgram(shaderProgram);

谢谢

1个回答

12
  • 这篇文章认为使用 glUseProgram 比使用 glAttachShader+glLinkProgram 更好。
  • 这篇文章说改变着色器总是很耗费资源的,但是使用 glUseProgram 是最轻量级的。
  • 这篇文章认为通常来说使用 glUseProgram 是高效的。
  • 这篇文章认为适度和谨慎地使用 glUseProgram 不会成为瓶颈。
  • 这篇文章讨论了一些关于着色器切换的性能优化。

因此,结论是:适度使用。如果你没有太多对象,那就好,如果有,可以尝试优化着色器切换,或者多次重复使用着色器,或者使用同一个利用分支的着色器。

useProgram 会有中等性能损耗。它不是超级轻量级的,也不像 linkProgramcompileShader 那么重。

希望这可以帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接