将模板缓冲区拖入颜色缓冲区。可能吗?

时间:2013-02-11 02:23:20

标签: opengl blit

我正在尝试通过GLSL渲染模板缓冲区纹理,但我找不到它。 使用GL_DEPTH24_STENCIL8格式将模板纹理与深度纹理打包在一起。 我发现你不能渲染那个纹理,至少不能渲染模板数据,但深度数据是使用纹理的x / y / z值渲染的。所以我提出了尝试将模板缓冲区blit到GL_RED纹理的超级想法。这有可能吗?

以下是如何将模板缓冲区从FBO1 blit到FBO2:

glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, FBO1 );
glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, FBO2 );
glBlitFramebufferEXT(0, 0, X, Y, 0, 0, X, Y, GL_STENCIL_BUFFER_BIT, GL_NEAREST );
glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, 0);

这就是我被困住的地方。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您只能将一种类型的数据blit到其自己的数据类型中。您不能将颜色数据嵌入GL_DEPTH_COMPONENT,也不能将深度数据嵌入到颜色中。而且你也不能把模板变成一种颜色。

实现您想要的唯一方法是ARB_stencil_texturing,这是GL 4.3的一部分。它是否可用于您的硬件取决于您的硬件。