与webgl 1.0中的gl.readBuffer(gl.COLOR\u ATTACHMENTx)等效

与webgl 1.0中的gl.readBuffer(gl.COLOR\u ATTACHMENTx)等效,webgl,Webgl,我需要渲染到2个纹理(当然是在过程中) 和片段着色器: #extension GL_EXT_draw_buffers : require void main() { gl_FragData[0] = vec4(pos,vit); gl_FragData[1] = vec4(col,1.0); } 但现在我的问题是:我如何读取纹理?我已经读过一些类似的问题,但是关于FramebufferRenderbuffer 我想要一个: g

我需要渲染到2个纹理(当然是在过程中)

和片段着色器:

#extension GL_EXT_draw_buffers : require

void main() {

                gl_FragData[0] = vec4(pos,vit);
                gl_FragData[1] = vec4(col,1.0);
}
但现在我的问题是:我如何读取纹理?我已经读过一些类似的问题,但是关于FramebufferRenderbuffer

我想要一个:

gl.readBuffer(gl.COLOR_ATTACHMENT0);
gl.readPixels(...);

gl.readBuffer(gl.COLOR_ATTACHMENT1);
gl.readPixels(...);
谢谢


编辑:我使用Webgl 1,但使用特殊扩展Webgl_draw_buffers

创建更多帧缓冲区,将纹理单独附加到这些帧缓冲区,在需要读取纹理时绑定这些帧缓冲区

有效地

create texture1
create texture2

create drawFramebuffer
   attach texture1 as color attachment0
   attach texture2 as color attachment1

create readFramebuffer1
   attach texture1 as color attachment0

create readFramebuffer2
   attach texture2 as color attachment0

现在,当您要绘制时绑定
drawFramebuffer
,当您要从texture1读取时绑定
ReadFrameBuffer1
,当您要从texture2读取时绑定
ReadFrameBuffer2
创建更多的帧缓冲区,分别将纹理附加到这些帧缓冲区,要从纹理读取时,请绑定这些帧缓冲区

有效地

create texture1
create texture2

create drawFramebuffer
   attach texture1 as color attachment0
   attach texture2 as color attachment1

create readFramebuffer1
   attach texture1 as color attachment0

create readFramebuffer2
   attach texture2 as color attachment0

现在,当你想画图的时候绑定
drawFramebuffer
,当你想从texture1中读取的时候绑定
ReadFrameBuffer1
,当你想从texture2中读取的时候绑定
ReadFrameBuffer2

,我把它放在下面:
ext.drawBuffersWEBGL([ext.COLOR\u ATTACHMENT0\u WEBGL,ext.COLOR\u ATTACHMENT1\u WEBGL])**在**创建readFramebuffer1和readFramebuffer2FYI之前,drawBuffers是帧缓冲区状态。除非没有绑定帧缓冲区,否则它实际上是画布状态。看到了,然后它就工作了:
ext.drawBuffersWEBGL([ext.COLOR\u ATTACHMENT0\u WEBGL,ext.COLOR\u ATTACHMENT1\u WEBGL])**在**创建readFramebuffer1和readFramebuffer2FYI之前,drawBuffers是帧缓冲区状态。除非没有绑定帧缓冲区,否则它实际上是画布状态。看到和