问题描述
我正在尝试将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文章以修复该功能签名