如何使用CheckMultisampleQualityLevels并启用多重采样

Tel*_*nor 4 c++ directx multisampling antialiasing directx-11

我正在学习directx 11并尝试设置多重采样.出于某种原因,互联网上的每个教程都禁用多重采样,并且永远不会讨论如何启用它.

第一:我四处搜寻,找不到任何如何使用的例子CheckMultisampleQualityLevels.您似乎需要创建一个设备,调用该功能,找出可用的级别,然后销毁该设备并使用您想要的设置创建一个新设备.这是正确的方法吗?或者,还有更好的方法?

其次,如何启用多重采样?因为我不知道怎么去CheckMultisampleQualityLevels工作,我试图把一些值DXGI_SWAP_CHAIN_DESC.SampleDesc.CountDXGI_SWAP_CHAIN_DESC.SampleDesc.Quality(如4,4),它不运行时,不会显示任何内容(它的错误,如果我把在疯狂的价值观像33和2).这是否需要在交换链描述之外的其他地方设置,或者着色器是否以某种方式干扰它(我有基本的灯光和纹理着色器设置)?

我有一台GTX 570,所以我知道它可以支持大多数AA设置.我正在关注这套教程,以防有任何帮助:http://rastertek.com/tutindex.html

小智 5

1.Call ID3D11Device :: CheckMultisampleQualityLevels,它为您提供适配器支持的质量级别.

2.在填写DXGI_SWAP_CHAIN_DESC时,设置SampleDesc.CountSampleDesc.Quality.

3.如果使用多样本抗锯齿,则所有绑定渲染目标和深度缓冲区必须具有相同的样本计数和质量级别.(DXGI_SAMPLE_DESC结构)

根据有关D3D11_RASTERIZER_DESC(D3D11_RASTERIZER_DESC结构),API功能级别10.1及更高版本的msdn文档,MultisampleEnable 对MSAA的点和三角形没有影响,仅影响线渲染算法的选择.

您应该查看msdn以获取更多详细信息.