我想创建一个带有4个颜色附件、16位深度缓冲区和16位模板缓冲区的帧缓冲。我需要使用16位模板缓冲区,因为我在其中存储了超过255个对象的对象ID以进行对象选取。我创建了两个渲染缓冲区:
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);
但是当我将模板渲染缓冲绑定到帧缓冲时,会出现帧缓冲不完整的错误。我知道维基百科上说 GL_STENCIL_INDEX16 并不是规范所必需的。难道不能创建 16 个模板缓冲吗?我能将对象 ID 的整数编码转换为 8 位值吗?