WebGL中是否不允许绑定gl.ARRAY_BUFFER和Vertex Attrib Array为0(二)

Are we not allowed to bind gl.ARRAY_BUFFER and Vertex Attrib Array to 0 in WebGL (2)

在 openGL 中,"unbind" 您的 ARRAY_BUFFER 和任何绑定的 VAO 很常见,方法是调用(相当于 OGL):

gl.bindBuffer(gl.ARRAY_BUFFER, 0)
gl.bindVertexArray(0)

但是,当我在 WebGL (2) 中执行此操作时,出现以下错误:

Uncaught TypeError: Failed to execute 'bindBuffer' on 'WebGL2RenderingContext': parameter 2 is not of type 'WebGLBuffer'.

我们不应该在 WebGL (2) 中这样做吗?

你必须传入 null 而不是 0

gl.bindBuffer(gl.ARRAY_BUFFER, null)
gl.bindVertexArray(null)

出于各种原因,WebGL 不像 OpenGL 那样使用 GLint ID,它使用对象 WebGLBufferWebGLTextureWebGLVertexArrayObject 等...以及 0 版本是 null.