ChatGPT坚持认为,当使用帧缓冲区并附加多个绘制缓冲区时,0索引的缓冲区将是您在着色器中写入时将在画布上渲染的缓冲区。然而,我认为情况并非如此。
以下是我的设置方式:
//创建和绑定帧缓冲区multiFrameBuffer=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,multiFrameBuffer);//为颜色附件创建纹理const textureRender=createTexture(gl);const textureSmoothed=创建纹理(gl);const textureWithChangeMarks=创建纹理(gl);//将纹理附加到帧缓冲区gl.帧缓冲Texture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,textureRender,0);gl.帧缓冲区纹理2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT1,gl.TEXTURE_2D,纹理平滑,0);gl.帧缓冲区纹理2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT2,gl.TEXTURE_2D,带更改标记的纹理,0);//指定绘图缓冲区gl.draw缓冲器([gl.COLOR_ATTACHMENT0,gl.颜色_附件1,gl.颜色_附件2]);
在片段着色器中,我定义:
布局(location=0)out vec4 fragColor;布局(location=1)out vec4 mergedColor;布局(location=2)out vec4 changedColor;
我将颜色写入所有向量,我希望写入fragColor(碎片颜色)
将是与webgl上下文关联的画布上的渲染像素,但没有渲染。如果我读取像素
从另外两个-我得到了预期的缓冲区。我还没试着从附件0
-但我希望能够直接渲染到画布上。