IDXGIOutput::GetDisplayModeList 未找到任何显示模式

IDXGIOutput::GetDisplayModeList Finds No Display Modes

我正在尝试获取 IDXGI_OUTPUT* 的所有可能解决方案的列表。为此,我找到了 IDXGIOutput::GetDisplayModeList API。不幸的是,我在网上几乎找不到使用示例。我在 MSDN 上试过,它没有找到任何显示模式(num 是 0)

UINT num = 0;
DXGI_FORMAT format = DXGI_FORMAT_R32G32B32A32_FLOAT;
UINT flags         = DXGI_ENUM_MODES_INTERLACED;

pOutput->GetDisplayModeList( format, flags, &num, 0);

DXGI_MODE_DESC * pDescs = new DXGI_MODE_DESC[num];
pOutput->GetDisplayModeList( format, flags, &num, pDescs);

我注意到 MSDN 建议改用 GetDisplayModeList1(),所以我也尝试了,但 num 仍然是 0。我还验证了 IDXGI_OUTPUT* 是完全有效的。我不知所措...

您要求所有支持DXGI_FORMAT_R32G32B32A32_FLOAT格式的显示模式。 “显示 scan-out”。

永远不支持这种格式(至少在发布此答案时)

当前唯一定义的“显示 scan-out”DXGI 格式是:

DXGI_FORMAT_R16G16B16A16_FLOAT
DXGI_FORMAT_R10G10B10A2_UNORM
DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM
DXGI_FORMAT_R8G8B8A8_UNORM
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB
DXGI_FORMAT_B8G8R8A8_UNORM
DXGI_FORMAT_B8G8R8A8_UNORM_SRGB

参见Microsoft Docs