首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GL_DRAW/READ_FRAMEBUFFER vs GL_FRAMEBUFFER?

GL_DRAW/READ_FRAMEBUFFER vs GL_FRAMEBUFFER?
EN

Stack Overflow用户
提问于 2011-12-18 02:01:09
回答 2查看 7.1K关注 0票数 9

我注意到现在有GL_DRAW/READ_FRAMEBUFFER扩展。目前我只是简单地使用GL_FRAMEBUFFER和glTextureBarrierNV。然而,我没有发现太多关于读/写扩展的内容,因此我有一些问题。

他们引入了什么OpenGL版本?与简单地使用GL_FRAMEBUFFER进行读写相比,它们有什么优势?我在哪里可以找到关于这方面的更多信息?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-18 02:20:27

OpenGL注释:GL_DRAW/READ_FRAMEBUFFER不是在扩展中引入的;它们是核心的OpenGL 3.0功能。是的,从技术上讲,这个功能在ARB_framebuffer_objects中也是公开的,但这是一个core extension,它仍然是核心GL3.0。

在任何情况下,如果你想了解DRAW/READ区别的词源,你需要看看EXT_framebuffer_blit。这就是这些枚举器起源的地方,也是这些枚举器存在的原因。他们为帧缓冲区创建了两个上下文绑定点,而不是仅仅指定两个FBO来blit from/to。从当前绑定的READ_FRAMEBUFFER到当前绑定的DRAW_FRAMEBUFFERglBlitFramebuffer命令blits。

如果你没有使用blit,那么你就不需要DRAW/READ的区别了。然而,这并不意味着你不应该使用它。glReadPixelsREAD_FRAMEBUFFER读取数据。绑定到GL_FRAMEBUFFER会同时绑定到这两个点,因此您的代码仍然可以工作。但有时有一个FBO绑定是有用的,它可以从中读取,而不会干扰绘图操作。

票数 13
EN

Stack Overflow用户

发布于 2011-12-18 02:19:43

如果您指的是GL_READ_FRAMEBUFFERGL_DRAW_FRAMEBUFFER常量,那么这些常量来自EXT_framebuffer_blit扩展,该扩展后来在OpenGL 3.0中成为核心,并成为小于3版本的特殊ARB_framebuffer_object扩展(当然还有EXT_framebuffer_multisample和原始的EXT_framebuffer_object )。

它们允许您为读取和绘制操作绑定单独的FBO。这对于EXT_framebuffer_blit引入的FBO到FBO复制操作特别有用(它允许您直接将数据从一个FBO复制到另一个FBO),并且对于由EXT_framebuffer_multisample引入(和需要)的多采样FBO的解析,它实际上构建在前面提到的blit扩展之上。将FBO绑定到GL_FRAMEBUFFER时,实际上同时将其绑定到GL_READ_FRAMEBUFFERGL_DRAW_FRAMEBUFFER

就像说的那样,所有这些FBO扩展在OpenGL 3.0中都是核心的,但也可能在更早的版本中可用。有关更多信息,请查看here

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8546766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档