我正在使用 WebGL (≈ OpenGL ES 2.0)。目前,我的应用程序使用纹理单元 0 作为每个模型的纹理,并将 1 和 2 作为着色器使用的常量纹理。
为了加载和设置纹理,我做
var texture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, texture);
gl.texImage2D(...);
gl.texParameteri(...);
但是,这会影响纹理绑定到当前纹理单元的状态。为了避免这个程序,我添加了
gl.activeTexture(gl.TEXTURE0);
到上述代码的开头,因此它只影响纹理单元 0 的绑定,该绑定在绘制任何几何图形之前被重置。
有没有更好的方法,即不涉及碰巧有可用的“临时”纹理单元?是否有针对此状态管理问题的既定最佳实践?