c++ - OpenGL 16 位模板缓冲区?
问题描述
我正在尝试创建具有 4 个颜色附件、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);
但是当我将模板渲染缓冲区绑定到帧缓冲区时,我得到一个帧缓冲区不完整错误。我知道 wiki 声明规范不需要 GL_STENCIL_INDEX16。不能创建 16 个模板缓冲区吗?我可以将对象 ID 整数编码为 8 位值吗?
解决方案
不需要支持单独的深度和模板缓冲附件。
请参阅OpenGL 4.6 API 核心配置文件规范 - 9.4.3 所需的帧缓冲区格式
[...] 但是,当深度和模板附件都存在时,只需要实现支持两个附件都引用同一图像的帧缓冲区对象。
也可以看看:
推荐阅读
- kubernetes - 根据 pod 标签动态更新 prometheus scrape 配置
- javascript - react hooks 和 react class 的性能对比
- jenkins - 为 Jenkins 流水线设置相对超时阈值
- julia - 如何从 BioAlignments.jl 比对中检索比对区域的序列索引?
- python - 熊猫准时加入并允许多场比赛
- linux - Linux,安装FBX SDK,如何自动确认?
- laravel - Laravel 空分页数据
- reactjs - 即使在使用 es6 过滤后如何保留数组值
- ios - 强制一个 NavigationLink 到 SwiftUI 中的详细视图
- c - C while 指针是否可以与任何指针变量一起使用