glUseProgram后丢失/重置的状态是什么?

时间:2012-02-06 16:44:06

标签: graphics opengl-es glsl shader

这与Switch shader program in WebGL有关,但我现在想重新提出这个问题,我对这个问题以及我想问的内容有了更清楚的认识。

我正在尝试在不同的着色器程序之间切换,但在同一渲染中切换着色器程序时,我似乎无法正确渲染。在调用glUseProgram()后,我认为状态丢失或重置。

通话结束后丢失或重置的状态是什么?换句话说,我需要在glUseProgram()之后再次绑定什么?

1 个答案:

答案 0 :(得分:0)

您的顶点数组和顶点属性数组可能在其他程序(例如this.locATex)中具有不同的位置,例如,纹理绑定和采样器制服可能会出现同样的问题。您需要为每个程序单独查询那些属性位置和“纹理单位制服”(需要自己初始化),并在绘制之前相应地绑定数组和纹理。另一端的进一步绑定也可能破坏,例如片段数据位置。但我建议,在新问题发明之前,你需要提供更多代码: - )。