gpt4 book ai didi

c++ - Opengl 帧缓冲区分离模板纹理

转载 作者:太空狗 更新时间:2023-10-29 21:15:32 24 4
gpt4 key购买 nike

我找不到任何关于帧缓冲区对象的单独模板纹理的文档。基本上这是我到目前为止所拥有的:

glBindTexture(GL_TEXTURE_2D, this->mTextures[FRAMEBUFFER_STENCIL_TEXTURE]);
glTexImage2D(GL_TEXTURE_2D, 0, GL_R8I, width, height, 0, GL_RED_INTEGER, GL_INT, 0);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

glFramebufferTexture2D(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_TEXTURE_2D, this->mTextures[FRAMEBUFFER_STENCIL_TEXTURE], 0);

但这会导致创建错误。是我的格式错误还是其他原因?

最佳答案

是的,这些格式值对于模板纹理是错误的。您需要为 internalFormatformat 使用特定的模板枚举。对于 8 位模板纹理,调用应如下所示:

glTexImage2D(GL_TEXTURE_2D, 0, GL_STENCIL_INDEX8,
width, height, 0, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, 0);

正如评论中所指出的,纯模板纹理仅在 OpenGL 4.4 及更高版本中可用。

另一种方法是分配深度/模板纹理,而不使用深度部分。然而,从深度/模板纹理的模板部分采样需要 OpenGL 4.3 或更高版本,因此仅将版本要求降低一个次要版本。

关于c++ - Opengl 帧缓冲区分离模板纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37506460/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com