我想在DXUT(d3d11)函数的ModifyDeviceSettings回调中选择一个不错的MSAA级别,但是没有可用于调用CheckMultisampleQualityLevels的设备指针。
DXUT函数DXUTGetD3D11Device在init中此时返回null。有许多D3D9样本可以满足我的需求,但它们依赖于旧的DXUTGet3DObject(或其他)调用来返回实时设备指针,这是D3D11中没有的。
如果我只是在pDeviceSettings-> d3d11.sd.SampleDesc.Count中输入“4”,如果我选择了太大的数字它将恢复为1,但我想选择最好的可用但不高于4.
有谁知道我如何枚举DXUT框架中可用的多重采样级别并选择一个我觉得最好的?
答案 0 :(得分:0)
首先,确保您使用来自GitHub的最新 DXUT for Direct3D11 。
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;
}