Как найти лучший уровень 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;
}