【问题标题】:How to anti-alias in DirectX11 with Flip mode?如何使用翻转模式在 DirectX11 中消除锯齿?
【发布时间】:2021-02-03 08:52:20
【问题描述】:

我了解推荐使用翻转演示模式 (DXGI_SWAP_EFFECT_FLIP_DISCARD),但它似乎不支持多重采样。那么如何进行抗锯齿呢?

【问题讨论】:

  • @user7860670 对于非 UWP 桌面应用,除了不使用翻转模式,还有什么理由这样做吗?
  • 好吧,如果不需要支持翻转模型(以及它带来的好处),那么可能不需要。
  • @user7860670 我认为翻转模式的好处只是您当前没有执行表面复制。但是,如果您需要执行表面复制来执行 AA,那么我看不到翻转模式的任何理由。
  • 多重采样 AA 的工作原理是为每个渲染目标像素渲染几个像素并计算平均值,因此它本质上等同于表面复制。他们只是把它分成了两个步骤。我认为这种分离形式也用于 Nvidia DLSS 和类似技术。 (至少我是这么看的)

标签: directx directx-11


【解决方案1】:

现代“翻转”模式(DXGI_SWAP_EFFECT_FLIP_DISCARDDXGI_SWAP_EFFECT_FLIP_SEQUENTIAL)强制执行一些新的使用规则。具体来说,您不能创建 MSAA 后备缓冲区或_SRGB 格式的后备缓冲区。

现实情况是,当使用传统的“blt”样式模式(DXGI_SWAP_EFFECT_DISCARDDXGI_SWAP_EFFECT_SEQUENTIAL)时,您根本无法真正创建 MSAA 后台缓冲区。它只是隐式地创建了一个单样本后备缓冲区和一个 MSAA 渲染目标,并“通过魔法”进行解析。

在大多数“现实世界”渲染解决方案中,您 (a) 不只是进行解析,并且 (b) 不立即渲染 MSAA 渲染目标的已解析内容。后期处理、自定义抗锯齿和后期解析 UI 合成都发生在您呈现结果之前。因此,“魔术”解决方案仅对微不足道的样本有用。

查看此博客系列:The Care and Feeding of Modern Swap Chains

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 2017-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多