我正在尝试通过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);
这就是我被困住的地方。有什么想法吗?
答案 0 :(得分:2)
您只能将一种类型的数据blit到其自己的数据类型中。您不能将颜色数据嵌入GL_DEPTH_COMPONENT
,也不能将深度数据嵌入到颜色中。而且你也不能把模板变成一种颜色。
实现您想要的唯一方法是ARB_stencil_texturing,这是GL 4.3的一部分。它是否可用于您的硬件取决于您的硬件。