为了实现延迟着色,我使用了一个 fbo 来做多个渲染目标。
现在这种方法有效,但我想为背景添加一个天空球体。
显然这个天空球不属于延迟渲染周期,所以我必须在第二遍渲染。
但是,为了正确渲染天空球体,我必须检索深度值,因此延迟渲染纹理不会阻挡球体。
为此,我将深度纹理从 G 缓冲区复制到默认帧缓冲区:
gl.bindFramebuffer( gl.READ_FRAMEBUFFER, gDeferredDrawer.FrameBuffer.Context );
gl.bindFramebuffer( gl.DRAW_FRAMEBUFFER, null );
gl.blitFramebuffer( 0, 0, gl.viewportWidth, gl.viewportHeight, 0, 0, gl.viewportWidth, gl.viewportHeight, gl.DEPTH_BUFFER_BIT, gl.NEAREST );
gl.bindFramebuffer( gl.FRAMEBUFFER, null );
这种方法不起作用。WebGL 给我这个错误信息:
GL 错误:GL_INVALID_OPERATION:glBlitFramebufferCHROMIUM:目标帧缓冲区是多重采样的
我真的不知道我是怎么做错的。据我所知,互联网上没有明确的例子。那么有人可以启发我吗?