加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – OpenGL:只获取模板缓冲区而没有深度缓冲区?

发布时间:2020-12-16 07:07:19 所属栏目:百科 来源:网络整理
导读:我想获得一个模板缓冲区,但如果可能的话,不会受到附加深度缓冲区的开销,因为我不会使用它.我发现的大多数资源都表明,虽然模板缓冲区是可选的(例如,它不支持获得更多深度缓冲区精度),但我还没有看到任何请求并成功获取8位模板缓冲区的代码.我见过的最常见配置
我想获得一个模板缓冲区,但如果可能的话,不会受到附加深度缓冲区的开销,因为我不会使用它.我发现的大多数资源都表明,虽然模板缓冲区是可选的(例如,它不支持获得更多深度缓冲区精度),但我还没有看到任何请求并成功获取8位模板缓冲区的代码.我见过的最常见配置是带有8位模板缓冲区的24位深度缓冲区.

是否可以仅请求带有颜色缓冲区的模板缓冲区?

如果可能的话,大多数OpenGL实现是否可以批准该请求?

我使用的OpenGL版本是2.0

编辑:

我用来调用OpenGL的API是SFML,它通常不支持它的FBO包装器对象的模板分配,尽管它允许它用于显示表面的帧缓冲.我自己编辑了这个功能,虽然这就是我被困住的地方.

glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT,GL_DEPTH24_STENCIL8_EXT,width,height));

该行决定了我假设的存储类型.但是,GL_DEPTH24_STENCIL8_EXT是我发现的唯一一个指定模板缓冲区创建的定义. (至少没有GL_STENCIL8或类似的东西)

解决方法

研究评论中提到的GL_STENCIL_INDEX8,我在官方OpenGL维基中遇到了以下行,http://www.opengl.org/wiki/Framebuffer_Object_Examples#Stencil

NEVER EVER MAKE A STENCIL buffer. All GPUs and all drivers do not support an independent stencil buffer. If you need a stencil buffer,then you need to make a Depth=24,Stencil=8 buffer,also called D24S8.

压力测试两种不同的分配方案,GL_STENCIL_INDEX8_EXT与GL_DEPTH24_STENCIL8_EXT,结果在内存使用和性能方面大致相等.我怀疑它无论如何都用24位填充模板缓冲区.因此,为了便于携带,只使用深度和模板包装方案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读