5
这与Switch shader program in WebGL有关,但我想重新提出这个问题,现在我对问题有了更清楚的认识以及我想问什么。glUseProgram后,什么状态丢失/重置?
我试图在不同的着色器程序之间切换,但我似乎无法在同一渲染中切换着色器程序时正确渲染。我认为在拨打glUseProgram()
之后,状态丢失或重置。
该通话后,哪些状态丢失或重置?换句话说,我需要在glUseProgram()
后再次绑定?
感谢您的建议,但我一直在寻找更一般的建议,就像我需要再次设置制服还是保持其价值?属性或统一位置对于一个给定的程序是否坚持其价值?纹理是否需要重新启用?等等。 – AshleysBrain 2012-02-06 17:26:17
链接程序后,Attrib位置和实际统一的位置和值仍然存在。统一缓冲区可以绑定到更多的程序。纹理不需要重新启用,因为您没有使用固定功能管线。 – Sam 2012-02-06 17:35:34
纹理单元具有多个附着点,例如可以绑定2D和3D纹理,并使用适当的采样器制服访问它们中的任何一个。 – Sam 2012-02-06 17:37:09