IDXGIOutput::GetDisplayModeList 方法 (dxgi.h)

[从 Direct3D 11.1 开始,建议不再使用 GetDisplayModeList 来检索匹配的显示模式。 请改用支持立体声显示模式 的 IDXGIOutput1::GetDisplayModeList1。]

获取与请求的格式和其他输入选项匹配的显示模式。

语法

HRESULT GetDisplayModeList(
                  DXGI_FORMAT    EnumFormat,
                  UINT           Flags,
  [in, out]       UINT           *pNumModes,
  [out, optional] DXGI_MODE_DESC *pDesc
);

参数

EnumFormat

类型: DXGI_FORMAT

颜色格式 (DXGI_FORMAT )

Flags

类型: UINT

要包含 (模式的选项,请参阅 DXGI_ENUM_MODES) 。 需要指定DXGI_ENUM_MODES_SCALING来公开需要缩放的显示模式。 默认情况下,将枚举不需要缩放且直接对应于显示输出的居中模式。

[in, out] pNumModes

类型: UINT*

pDesc 设置为 NULL ,以便 pNumModes 返回与格式和选项匹配的显示模式数。 否则, pNumModes 返回 pDesc 中返回的显示模式数。

[out, optional] pDesc

类型: DXGI_MODE_DESC*

指向显示模式列表的指针, (查看 DXGI_MODE_DESC) ;设置为 NULL 以获取显示模式的数量。

返回值

类型: HRESULT

返回以下 DXGI_ERROR之一。 调用此方法后,可用显示模式可能会立即更改的情况很少,但有可能,在这种情况下,如果没有足够的空间用于) 的所有显示模式,则 (返回DXGI_ERROR_MORE_DATA。
如果从远程桌面服务会话 (以前终端服务会话) 调用 GetDisplayModeList ,则返回DXGI_ERROR_NOT_CURRENTLY_AVAILABLE。

备注

通常,从窗口模式切换到全屏模式时,交换链会自动选择满足 (或超过) 交换链的分辨率、颜色深度和刷新率的显示模式。 若要对显示模式进行更多控制,请使用此 API 轮询针对监视器功能进行验证的显示模式集,或者轮询与桌面 (匹配的所有模式(如果未针对监视器) 验证桌面设置)。

如图所示,此 API 设计为调用两次。 首先获取可用模式数,第二个返回模式说明。


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);
      

要求

   
目标平台 Windows
标头 dxgi.h
Library DXGI.lib

请参阅

IDXGIOutput