opengl-es - WebGL - gl.useProgram() 是一个昂贵的调用吗?

标签 opengl-es webgl

我想知道这个用于加载着色器程序的API方法是否昂贵或不调用? 我正在考虑对 3D 场景中的每个对象进行此调用。

gl.useProgram(shaderProgram);

谢谢

最佳答案

  • this说使用 glUseProgram 比使用 glAttachShader+glLinkProgram
  • 更好
  • this说更改着色器总是很繁重,但 glUseProgram 是最轻的
  • this说它通常很有效
  • this说适度谨慎的使用不会成为瓶颈
  • this谈论一下着色器切换性能优化

所以,结论是:适度使用。如果您没有太多对象 - 那就太好了 - 尝试优化着色器切换,或多次重复使用着色器,或使用以某种方式利用分支的相同着色器。

useProgram 的性能受到中等影响。它不是超轻量,也不像 linkProgramcompileShader 那样超重。

希望这有帮助。

关于opengl-es - WebGL - gl.useProgram() 是一个昂贵的调用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23968364/

相关文章:

javascript - 通过 WEBGL_depth_texture 渲染缓冲区对象和深度纹理有什么区别?

javascript - 有没有办法让 WebGL 在屏幕外渲染,而无需将 webgl Canvas 附加到 DOM?

树莓派 : Cannot find GLESv2 的 qt 交叉编译

iphone - GPUImageMovieWriter 帧 presentationTime

opengl-es - 如何在 OpenGL (ES) 中将非 2 幂纹理显示为 Sprite 而不进行拉伸(stretch)?

webgl - 从 webgl 中获取数据

opengl - 渲染具有多个索引的网格

iphone - 如何使用 glRotatef() 和 glTranslatef() 在 3D 世界中增量移动

android - 我对我必须做什么感到困惑(android 渲染引擎)

javascript - 从 WebGL Canvas 读取似乎工作不一致