无法执行gl.texSubImage2d

问题描述

我正在尝试将GPU驻留缓冲区中的数据加载到Chrome上的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,gl_type,offset);

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

            gl.texSubImage2D(target,width,height,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/

您不能很好地拥有一个“ tex Sub Image2D”功能,该功能没有说明如何以一种或另一种方式获取宽度和高度。

我编辑了MDN文章以修复该功能签名