FBO 深度和模板渲染缓冲区附件

Posted

技术标签:

【中文标题】FBO 深度和模板渲染缓冲区附件【英文标题】:FBO depth and stencil render buffer attachments 【发布时间】:2013-05-06 11:20:28 【问题描述】:

OpenGL wiki 表示,为了在 FBO 中使用带有深度缓冲区的模板缓冲区附件,需要创建格式为 GL_DEPTH24_STENCIL8 的渲染缓冲区,因为它似乎没有实现 GL_STENCIL_INDEXX。

我不明白的是,如果我将它设置为GL_DEPTH_STENCIL_ATTACHMENT,这样的缓冲区是否也是深度缓冲区?或者我还应该使用格式 (GL_DEPTH_COMPONENTXX) 创建单独的深度渲染缓冲区吗?

【问题讨论】:

你在哪个平台上? Linux/Windows OpenGL4.2 【参考方案1】:

并不是说 STENCIL_INDEX 格式没有“实现”。规范并不要求一个实现来认为它们是完整的。允许实现reject a combination of image formats for whatever reasons it deems fit,除非你坚持list of required image formats。

深度/模板图像中包含深度和模板,就像红色/绿色图像中同时包含红色和绿色一样。所以是的,你 attach the same image 到 GL_DEPTH_ATTACHMENTGL_STENCIL_ATTACMENT 点。或者您使用GL_DEPTH_STENCIL_ATTACHMENT 作为两者的简写。

【讨论】:

我实际上尝试使用 GL_STENCIL_INDEX 并且总是导致 FBO 不完整。同样在同一个维基上说“不要”这样做!”;)

以上是关于FBO 深度和模板渲染缓冲区附件的主要内容,如果未能解决你的问题,请参考以下文章

GL_TEXTURE_3D 颜色和模板 FBO 附件

我可以避免将模板缓冲区从 FBO 传送到后台缓冲区吗?

FBO深度纹理附件的最佳设置

在 OpenGL ES 中为帧缓冲区使用深度和模板渲染缓冲区附件

是否可以将默认渲染缓冲区附加到 FBO?

OpenGL(FBO)中的普通后台缓冲区+渲染到深度纹理