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

Ash*_*ain 5 graphics shader opengl-es glsl

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

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

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

Sam*_*Sam 0

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