如何在DXUT的ModifyDeviceSettings函数中找到最佳的MSAA级别

时间:2015-07-13 21:45:42

标签: c direct3d dxut

我想在DXUT(d3d11)函数的ModifyDeviceSettings回调中选择一个不错的MSAA级别,但是没有可用于调用CheckMultisampleQualityLevels的设备指针。

DXUT函数DXUTGetD3D11Device在init中此时返回null。有许多D3D9样本可以满足我的需求,但它们依赖于旧的DXUTGet3DObject(或其他)调用来返回实时设备指针,这是D3D11中没有的。

如果我只是在pDeviceSettings-> d3d11.sd.SampleDesc.Count中输入“4”,如果我选择了太大的数字它将恢复为1,但我想选择最好的可用但不高于4.

有谁知道我如何枚举DXUT框架中可用的多重采样级别并选择一个我觉得最好的?

1 个答案:

答案 0 :(得分:0)

首先,确保您使用来自GitHub的最新 DXUT for Direct3D11

DXUT枚举所有MSAA信息,作为CD3D11EnumDeviceSettingsCombo成员multiSampleCountListmultiSampleQualityList中设置对话框支持的一部分。

那就是说,想要默认启用MSAA 4x'的样本。通常只是这样做:

bool CALLBACK ModifyDeviceSettings( DXUTDeviceSettings* pDeviceSettings,
    void* pUserContext )
{
    static bool s_bFirstTime = true;
    if( s_bFirstTime )
    {
        // Enable 4xMSAA by default
        DXGI_SAMPLE_DESC MSAA4xSampleDesc = { 4, 0 };
        pDeviceSettings->d3d11.sd.SampleDesc = MSAA4xSampleDesc;
    }

    return true;
}