我正在尝试将模板缓冲区放入一个纹理中以便在延迟渲染器中使用。
我使用
但是,当我尝试使用
我不知道问题出在哪里。我怀疑这可能是设置模板纹理的问题...
我在设置中没有收到任何错误代码,所以我不知道问题出在哪里。
编辑:也许我做错了。如果有人知道如何将模板缓冲区写入纹理,请告诉我一个可行的方法,我并不在意用不同的代码来写。我只需要一个能用的方法。
我使用
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, textures[color1], 0);
获得其他颜色和深度附件,结果是正确的。![Correct Rendering without Stencil Buffer](https://istack.dev59.com/zMBwv.webp)
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT ,GL_TEXTURE_2D, textures[stencil], 0);
将我的模板缓冲区附加到一张纹理时,我会得到一个混乱的结果,就好像FBO没有清除它的缓冲区一样。
![Incorrect, Garbled Rendering](https://istack.dev59.com/2328f.webp)
//Stencil Texture Initialization
glBindTexture(GL_TEXTURE_2D, textures[stencil]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glTexImage2D( GL_TEXTURE_2D, 0, GL_STENCIL_INDEX8, 512, 512, 0, GL_STENCIL_INDEX, GL_BYTE, 0);
我在设置中没有收到任何错误代码,所以我不知道问题出在哪里。
编辑:也许我做错了。如果有人知道如何将模板缓冲区写入纹理,请告诉我一个可行的方法,我并不在意用不同的代码来写。我只需要一个能用的方法。