提问者:小点点

OpenGL 16位模板缓冲区?


我正在尝试创建有4个颜色附件的framebuffer,一个16位深度缓冲区和一个16位模板缓冲区。 我需要16位的模具缓冲区,因为我存储的对象ID在他们中的对象拾取,我有很多超过255个对象。 我创建了两个呈现缓冲区:

glBindRenderbuffer(GL_RENDERBUFFER, mID);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, width, height);

glBindRenderbuffer(GL_RENDERBUFFER, mID2);
glRenderbufferStorage(GL_RENDERBUFFER, GL_STENCIL_INDEX16, width, height);
glBindRenderbuffer(GL_RENDERBUFFER, 0);

我要求SDL给我16位模板:

SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 16);

但是当我将模具呈现缓冲区绑定到framebuffer时,我会得到framebuffer不完整错误。 我知道wiki声明GL_STENCIL_INDEX16不是规范所要求的。 不可能创建16个模板缓冲区吗? 我可以将对象ID整数编码到8位值吗?


共1个答案

匿名用户

不需要支持单独的深度和模具缓冲区附件。

参见OpenGL 4.6 API核心配置文件规范-9.4.3所需的帧缓冲格式

[...] 但是,当同时存在深度和模具附件时,只需要实现来支持两个附件引用相同图像的framebuffer对象。

另请参阅:

无法将单独的模具缓冲区附加到FBO(填充深度+模具很好)

Framebuffer对象-完整性规则