【问题标题】:OpenGL: Post-Processing + Multisampling =?OpenGL:后处理+多重采样=?
【发布时间】:2015-06-07 02:48:09
【问题描述】:

我对 OpenGL 还很陌生,并试图弄清楚如何将后处理阶段添加到我的场景渲染中。到目前为止,我相信我知道的是我创建了一个 FBO,将场景渲染到该场景,然后我可以使用我的后处理着色器将 FBO 的纹理作为输入渲染到后台缓冲区。

但这超出了我的知识范围,当多重采样被投入使用时。FBO 必须是多重采样的。这留下了两种可能性:1. 后处理着色器对子样本进行 1:1 操作以生成最终的多重采样屏幕输出,或者 2. 着色器必须解析多个样本并为每个屏幕像素输出一个屏幕片段。这些怎么做?

【问题讨论】:

    标签: opengl fragment-shader post-processing multisampling


    【解决方案1】:

    嗯,选项 1 在 GL 中通过 GL_ARB_texture_multisample 引入的功能得到支持(自 GL 3.2 起成为核心)。基本上,这带来了新的多样本纹理类型,以及相应的采样器,如sampler2DMS,您可以在其中明确地从特定的样本索引中获取。这种方式能不能有效的实现你的后期处理效果,我不知道。

    选项 2 与您描述的有点不同。不是着色器会进行多重采样解析。您可以渲染成多重采样 FBO(不需要纹理,渲染缓冲区也可以)并使用 glBlitFramebuffer 显式解析到另一个非多重采样 FBO(这次,使用纹理)。然后可以将这种非多重采样纹理用作后处理的输入。而且无论是后处理还是默认帧缓冲区都不需要知道多重采样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多