在Windows应用商店中启用抗锯齿

Enabling antialiasing in Windows Store Apps

本文关键字:启用 Windows 应用      更新时间:2023-10-16

我有一个适用于Windows应用商店的D3D11应用程序,它目前不使用抗锯齿,我想启用它。

据MSDN报道,MSAA在Windows应用商店应用程序中被禁用:

DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL
使用此标志可以指定翻转表示模型,并指定DXGI在调用IDXGISwapChain1::Present1后保留后台缓冲区的内容。此标志不能用于多重采样
注意Windows应用商店应用程序必须使用DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL。

因为这个限制只适用于后台缓冲区,所以听起来最好的解决方法是创建一个新的屏幕外渲染目标,在该目标上启用MSAA,将所有内容都渲染到它,然后在Present之前,将屏幕外目标闪电传送到后台缓冲区(可能使用ResolveSubresource)。

我已经开始实现这个,但我不知道如何修改交换链和渲染目标视图。有人能告诉我这里的正确操作顺序吗?

您的建议是正确的。使用CreateTexture2D和CreateRenderTargetView创建MSAA渲染目标。D3D11_TEXTURE2D_DESC的DXGI_SAMPLE_DESC字段包含MSAA设置。然后将场景渲染到此渲染目标,并将ResolveSubresource渲染到后缓冲区中。交换链不需要更改。