重用WebGLProgram是个好主意吗?

时间:2018-08-17 04:33:48

标签: webgl webgl2

与其使用WebGlProgram创建新的gl.createProgram(),而是继续重复使用它,是一个好主意吗?

我列出了要重用的步骤:

  1. AttachShader(s):就我而言,我仅需要附加一个新的Fragment Shader。 (问题:我可以挂在编译好的着色器上吗?)
  2. linkProgram
  3. useProgram
  4. getAttribLocation
  5. getUniformLocation

1 个答案:

答案 0 :(得分:1)

您想做什么?所有GPU应用程序中有99.9%会创建着色器程序并完成。他们可能赚1,可能赚5000,但是他们从来没有考虑过您的问题。那么,您到底想做什么?

少数几个允许您编辑着色器的应用程序(shadertoy,glslsandbox,vertexshaderart等)可以制作新的并删除旧的或重复使用。彼此之间没有好处,这只是风格问题。

是的,您可以保留着色器。您可以将着色器与多个程序一起使用。这样做很常见。

如果更改着色器,则不会影响程序,除非/直到您将该程序与gl.linkProgram重新链接。任何时候调用gl.linkProgram都会成功,该程序以前所有的统一位置都已过时,您必须查询新的位置。