简单的OpenGL ES 2.0问题。如果我需要深度和颜色缓冲,我是否需要渲染两次几何图形?或者我可以在渲染颜色帧时绑定/附加深度缓冲?
或者我需要MRT/渲染两次?
这是OpenGL在渲染过程中更新颜色和深度缓冲区的正常操作模式,只要它们存在并被启用。
如果你渲染到一个FBO,并且想要使用深度缓冲,你需要通过分别调用glFramebufferTexture2D()
或glFramebufferRenderbuffer()
来附加一个颜色纹理或一个颜色渲染缓冲到GL_COLOR_ATTACHMENT0
。然后用glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, ...)
分配一个深度渲染缓冲区,并通过调用glFramebufferRenderbuffer()
将其附加到GL_DEPTH_ATTACHMENT
。
之后,你可以渲染一次,你的颜色和深度缓冲区将被更新。