0

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

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

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

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

4

1 回答 1

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;
} 
于 2015-07-13T22:43:05.607 回答