执行 gl.texSubImage2d 失败

Failed to execute gl.texSubImage2d

我试图在 Chrome 上将数据从 GPU 驻留缓冲区加载到 WebGL2 中的纹理中。如果可能,我想避免将数据复制进出 GPU。

我正在尝试使用以下调用顺序

// WebGL 2:
void gl.texSubImage2D(target, level, xoffset, yoffset, format, type, GLintptr offset);

记录在此处 https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texSubImage2D -- 但我总是得到

Failed to execute 'texSubImage2D' on 'WebGL2RenderingContext': No function was found that matched the signature provided.

以下是有关呼叫设置的更多信息:

            var target = gl.TEXTURE_2D;
            var level = 0;
            var xoffset = 0;
            var yoffset = 0;
            //var height = this.height;
            //var width = this.width;
            var format = gl[this.format];
            var gl_type = gl[this.typ];
            //var srcData = array;
            //var srcData = 0;
            //var srcOffset = 0;
            var offset = 0;
            // https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texSubImage2D
            gl.bindTexture(target, this.gl_texture);
            // ERRORS:
            gl.texSubImage2D(target, level, xoffset, yoffset, format, gl_type, offset);

在非常相似的代码中,以下调用序列(从数组缓冲区复制)工作正常。

            gl.texSubImage2D(target, level, xoffset, yoffset, width, height, format, gl_type, srcData, srcOffset);

有人知道我做错了什么吗?据我所知,所有参数都是有效的(但我知道 webGL 错误消息通常具有误导性)。是否有使用上述 7 个参数调用序列的示例代码有效?我还没有找到任何例子。提前致谢。

MDN 错误。没有功能

void gl.texSubImage2D(target, level, xoffset, yoffset, format, type, GLintptr offset);

查看实际规格:

https://www.khronos.org/registry/webgl/specs/latest/2.0/

你不能很好地拥有一个“texSubImage2D”函数,它不能以某种方式获取宽度和高度。

我编辑了 MDN 文章以修复该函数签名