什么是 directx11 中的每像素多重采样 DXGI_SAMPLE_DECS

what is multisample per pixel in directx11 DXGI_SAMPLE_DECS

我正在阅读有关 DXGI_SWAP_CHAIN_DESC 的文档,我遇到了 DXGI_SAMPLE_DESC

Count
Type: UINT
The number of multisamples per pixel.

现在 multisamples per pixel 到底是什么?

好的 anti-aliasing(不好意思我不知道)

Anti-aliasing is a technique used by users to get rid of jaggies that form on the screen. Since pixels are rectangular, they form small jagged edges when used to display round edges. Anti-aliasing tries to smooth out the shape and produce perfect round edges.

DXGI_SAMPLE_DESC 如您推测的那样是为了指定 Multi-Sample Anti-Aliasing (MSAA).

也就是说,您应该知道,您不应该再使用 SwapChain 对 MSAA 的支持。因此,只需始终设置 DXGI_SWAP_CHAIN_DESC.SampleDesc.Count = 1;DXGI_SWAP_CHAIN_DESC.SampleDesc.Quality = 0;.

相反,要使用 MSAA,您应该显式创建自己的 MSAA 渲染目标,并在向 single-sample SwapChain 展示结果时自行显式解析结果。有关原因和方式的详细信息,请参阅 this blog post series.

请注意,您可以将 MSAA SwapChains 用于 DirectX 11 以及较旧的 DXGI_SWAP_EFFECT_DISCARDDXGI_SWAP_EFFECT_SEQUENTIAL flip-effects,以及 DirectX 11 运行时会自动解决。根据博客 post,DirectX 12 或现代 DXGI_SWAP_EFFECT_FLIP_DISCARDDXGI_SWAP_EFFECT_FLIP_SEQUENTIAL 交换效果的使用不支持此功能。这实际上是一个 'toy' 设置,因为任何生产渲染都会在从 multi-sample 解析为 single-sample 之后进行额外处理,然后再将其放入交换链进行显示。

As you are likely new to DirectX 11, you may want to look at DirectX Tool Kit. I have a tutorial that covers MSAA.