【发布时间】:2014-06-30 12:51:50
【问题描述】:
简单的 OpenGL ES 2.0 问题。如果我需要深度和颜色缓冲区,我是否必须渲染几何图形两次?或者我可以在渲染颜色帧时绑定/附加深度缓冲区?
或者我需要 MRT/render 两次?
【问题讨论】:
标签: opengl-es opengl-es-2.0 depth-buffer
简单的 OpenGL ES 2.0 问题。如果我需要深度和颜色缓冲区,我是否必须渲染几何图形两次?或者我可以在渲染颜色帧时绑定/附加深度缓冲区?
或者我需要 MRT/render 两次?
【问题讨论】:
标签: opengl-es opengl-es-2.0 depth-buffer
在渲染期间更新颜色和深度缓冲区是 OpenGL 的正常操作模式,只要它们都存在并启用。
如果您要渲染到 FBO,并且想要使用深度缓冲区,则需要分别调用 glFramebufferTexture2D() 或 glFramebufferRenderbuffer() 将颜色纹理或颜色渲染缓冲区附加到 GL_COLOR_ATTACHMENT0。然后使用glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, ...) 分配一个深度渲染缓冲区,并通过调用glFramebufferRenderbuffer() 将其附加到GL_DEPTH_ATTACHMENT。
之后,您可以渲染一次,您的颜色和深度缓冲区都将更新。
【讨论】: