首页 > 解决方案 > 如何在具有翻转模式的 DirectX11 中消除锯齿?

问题描述

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

标签: directxdirectx-11

解决方案


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

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

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

请参阅此博客系列:现代交换链的维护和供给


推荐阅读