我现在有两种方案,对于实线一个程序和与顶点着色器换固体和片段着色器换固体和第二程序用于纹理与顶点着色器换纹理和一个片段 - 填充着色器的纹理。 我交换这两个程序和退出根据我所用图纸glUseProgram。 这是一个很好的解决方案? 或者我应该glAttachShader / glDetachShader从单一的计划?
Answer 1:
当然,你使用正确的解决方案。 结合不同的程序应该是低开销。 你显然不希望这样做所需以上,像任何状态变化。 例如,如果可以的话,渲染首先使用一个程序的一切,然后结合其他程序,并呈现所有使用它的原语,这将是在更频繁地结合不同的着色较好。
附加不同的着色器程序意味着你将不得不重新链接它,这不仅仅是结合不同的程序昂贵得多。
文章来源: OpenGL ES 2.0 - Multiple Programs or Shaders