Как найти лучший уровень MSAA, доступный в функции ModifyDeviceSettings DXUT

Я хотел бы выбрать достойный уровень MSAA в обратном вызове ModifyDeviceSettings функции DXUT (d3d11), но нет указателя устройства, доступного для вызова CheckMultisampleQualityLevels.

Функция DXUT DXUTGetD3D11Device возвращает ноль в этот момент в init. Есть несколько примеров D3D9, которые делают именно то, что я хочу, но они полагаются на старый вызов DXUTGet3DObject (или любой другой), чтобы вернуть указатель живого устройства, который вы не получите в D3D11.

Если я просто вставлю "4" в pDeviceSettings->d3d11.sd.SampleDesc.Count, который работает, и если я выберу слишком большое число, оно вернется к 1, но я бы хотел выбрать лучшее из доступных до не выше 4

Кто-нибудь знает, как я могу перечислить доступные уровни мультисэмплов в платформе DXUT и выбрать тот, который я считаю лучшим?

1 ответ

Во-первых, убедитесь, что вы используете последнюю версию DXUT для Direct3D11 от GitHub.

DXUT перечисляет всю информацию MSAA как часть поддержки диалоговых окон настроек в CD3D11EnumDeviceSettingsCombo члены multiSampleCountList а также multiSampleQualityList,

Тем не менее, примеры, которые хотят включить 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;
} 
Другие вопросы по тегам