Webgl readPixels() 无效操作:格式/类型组合无效
Webgl readPixels() invalid operation: invalid format/type combination
我试图读取我拥有的纹理的 RGBA 值,但它不断返回以下错误,并且每个值都显示为 0:
WebGL: INVALID_OPERATION: readPixels: invalid format/type combination
这是我在初始化时的代码,其中像素是纹理值的数组:
texture = gl.createTexture()
gl.activeTexture(gl.TEXTURE0)
gl.bindTexture(gl.TEXTURE_2D, texture)
gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1)
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, n, n, 0,
gl.RGBA, gl.FLOAT, new Float32Array(pixels))
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST)
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST)
FBO = gl.createFramebuffer()
gl.bindFramebuffer(gl.FRAMEBUFFER, FBO)
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0,
gl.TEXTURE_2D, texture, 0)
然后稍后,在单击事件中,我运行以下内容:
gl.bindFramebuffer(gl.FRAMEBUFFER, FBO);
var data = new Uint8Array(resolution * resolution * 4);
gl.readPixels(0, 0, resolution, resolution, gl.RGBA, gl.UNSIGNED_BYTE, data);
console.log(data)
数据返回一个由零组成的大型数组。格式和类型的正确组合是什么,或者我在这里哪里出错了?
使用gl.getContext("experimental-webgl")
之后
我设法使用以下方法读取浮点纹理的像素:
gl.bindFramebuffer(gl.FRAMEBUFFER, _this.myFrameBufferObject);
var data = new Float32Array(resolution * resolution * 4);
gl.readPixels(0,0,resolution,resolution,gl.RGBA,gl.FLOAT,data);
功劳归于此答案下方的评论
相关文章:
- 错误:格式为整数的 javascript 键无效
- Webgl readPixels() 无效操作:格式/类型组合无效
- 如何在一个代码中检查无效的日期格式和超过18年的有效期
- Apache poi XSSF创建Excel文件-Create返回格式或文件扩展名无效的空文件
- 使用自定义格式momentJS时时间无效
- 格式无效 pki.私钥发件人..PKCS#8 with node-forge javascript.
- 三星S4上的错误“GetPTLAFormat:无效格式”
- 返回无效日期格式的本地存储
- j查询日期格式无效
- 如何将无效的对象格式转换为 JSON
- 无效的 XML 格式 - 如何避免这种情况
- <脚本> 注释格式无效
- 如何删除在 Ajax文件上传上出现无效格式的默认警报
- CRM Javascript检查无效的电子邮件格式,并只输入一封电子邮件
- 将无效javascript格式的日期转换为ics标准datetime字段
- 日期在ISO格式的Chrome中无效-测试日期:2012-11-31
- 避免无效路径格式错误在D3更新
- safari中日期[dd/mm/yyyy]无效?如何使用jquery实现日/月/年格式的显示
- 字符串格式的日期无效
- Model.reject()会在extjs格式中产生无效字段