OpenGL ES 2.0 是否可以同时绘制深度并"color"缓冲区(无需 MRT)?



简单的OpenGL ES 2.0问题。如果我需要深度和颜色缓冲,我是否需要渲染两次几何图形?或者我可以在渲染颜色帧时绑定/附加深度缓冲?

或者我需要MRT/渲染两次?

这是OpenGL在渲染过程中更新颜色和深度缓冲区的正常操作模式,只要它们存在并被启用。

如果你渲染到一个FBO,并且想要使用深度缓冲,你需要通过分别调用glFramebufferTexture2D()glFramebufferRenderbuffer()来附加一个颜色纹理或一个颜色渲染缓冲到GL_COLOR_ATTACHMENT0。然后用glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, ...)分配一个深度渲染缓冲区,并通过调用glFramebufferRenderbuffer()将其附加到GL_DEPTH_ATTACHMENT

之后,你可以渲染一次,你的颜色和深度缓冲区将被更新。

最新更新