是否可以将像素值检索为具有多个附件的帧缓冲区上的浮点数?(WebGL 2)
我试过这个:
var framebuffer = _gl.createFramebuffer();
_gl.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer);
_gl.framebufferTexture2D(_gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, texture1, 0);
_gl.framebufferTexture2D(_gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT1, _gl.TEXTURE_2D, texture2, 0);
_gl.drawBuffers([_gl.COLOR_ATTACHMENT0, _gl.COLOR_ATTACHMENT1]);
使用浮动纹理设置如下:
_gl.texImage2D(_gl.TEXTURE_2D, 0, _gl.RGBA32F, 256, 256, 0, _gl.RGBA, _gl.FLOAT, null);
然后我绑定帧缓冲区并调用 readPixels 来获取第一个附件的值:
_gl.readPixels(0, 0, 1, 256, _gl.RGBA, _gl.FLOAT, 0);
没有浮动纹理,这项工作,但有浮动纹理,帧缓冲区保持不完整。
WebGL 2 规范似乎说这应该有效,但我现在有一些疑问,似乎 _gl.RGBA32F 似乎是问题所在,内部格式为 _gl.RGBA,它会产生不兼容的类型错误。