【问题标题】:MSAA resolve into texture attachment of the same FBOMSAA 解析为同一 FBO 的纹理附件
【发布时间】:2013-04-30 00:12:14
【问题描述】:

我一直在使用几个自定义 FBO。 FBO-A 附加了 MSAA 纹理,几何图形被渲染到其中。然后通过将 FBO-A 的 MSAA 纹理附件 blitting 到 FBO-B 的常规 tex 2d 附件来解决它。这个过程意味着在多个 FBO 之间切换,它在几个方面都有说明消息来源表明,在附件之间切换比在不同的 FBO 之间切换更明智。我尝试设置 MSAA 纹理和附加到同一个 FBO 的常规纹理。但我发现我无法通过 blitting 来解决问题。如果我将纹理从 MSAA 复制到常规纹理,MSAA 会像使用 blitting 一样解决吗?

更新:

仅针对那些有兴趣了解在单个 FBO 中使用多个 FBO 与多个附件是否值得(性能方面)的人。 我刚刚做了一个测试(NVidia Quadro 4000),结果与 FPS 完全相同(+= 15-20 帧)。它可能取决于硬件和 OGL 实现。

【问题讨论】:

  • "在多个来源中都指出,在附件之间切换比在不同的 FBO 之间切换更明智。" 分析数据或者它没有发生。停止过早的优化。
  • 这就是我现在要做的:)
  • 好吧,只是在两种变体上运行它并没有什么区别。

标签: opengl


【解决方案1】:

我尝试设置 MSAA 纹理和附加到同一个 FBO 的常规纹理。但我发现我无法通过 blitting 来解决。

当然不是。为了执行 blit,源和目标帧缓冲区必须是完整的。其中一个rules of completeness 声明所有附加图像必须具有相同数量的样本。

如果我将纹理从 MSAA 复制到常规纹理,MSAA 会像使用 blitting 一样解决吗?

“纹理副本”是什么意思?

如果您说的是使用新的4.3/ARB_copy_image glCopyImageSubData,那么没有。同样,源图像和目标图像的样本计数必须匹配。

如果您在谈论 copying from framebuffers to textures 使用 glCopyTexSubImage2D 等,那么是的,这将执行多样本解析。

但是,你真的应该做 blit。

【讨论】:

  • 所以说清楚,你说我必须设置一个单独的FBO(或保持单独的纹理)来blit into?
猜你喜欢
  • 2015-08-23
  • 2013-02-09
  • 1970-01-01
  • 2018-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 2011-10-14
相关资源
最近更新 更多