顯示相關的 API 的比較
API | 用途和目標受眾 |
---|---|
DisplayInformation | 用于檢索 CoreWindow 的呈現和布局屬性。 |
HdmiDisplayInformation | 用于枚舉和設置受限模式集的僅限 Xbox 的 API。 高度專用于 Xbox 媒體應用方案。 |
DisplayMonitor | 用于查詢物理監視器設備的屬性。 不公開有關操作系統配置或當前使用監視器的方式的任何運行時信息。 |
EnumDisplayDevices、?EnumDisplayMonitors、?EnumDisplaySettingsEx | 用于查詢 HMONITOR、GDI 設備和物理監視器映射的舊 Win32 API。 此處返回的信息經過高度虛擬化和維護,以實現應用程序兼容性。 |
Direct3D | 用于將像素內容呈現到 GPU 圖面,并在 GPU 上執行計算。 |
DXGI?交換鏈 | 用于窗口化和無邊框的全屏演示文稿。 應用交換鏈內容流經系統合成器 DWM。 |
DXGI?輸出枚舉 | 提供 HMONITOR 周圍的 DXGI 包裝器。 |
QueryDisplayConfig、SetDisplayConfig、DisplayConfigGetDeviceInfo、DisplayConfigSetDeviceInfo | 用于配置顯示拓撲的 Win32 API。 不提供枚舉多個模式的機制,但提供了有關當前配置和設置的豐富信息集。 但是,并非所有較新的模式屬性都由這些 API 公開。 |
Windows.Devices.Display.Core?(本文檔) | 用于枚舉目標、枚舉模式、配置模式、分配用于演示的 GPU 圖面以及顯示要顯示的內容。 |
顯示配置概述
物理硬件枚舉
Windows.Devices.Display.Core API 具有各種對象來表示物理硬件對象。 DisplayAdapter 通常是物理硬件設備,例如 PCI Express 連接的 GPU 或 CPU 上的集成 GPU。 DisplayTarget 對象表示可從 GPU 連接到的物理連接器(例如 HDMI、VGA、DisplayPort 等)。 這可能包括具有內部監視器(筆記本電腦、平板電腦等)的設備的內部非用戶可見連接。 軟件中可能 有更多的 DisplayTarget 對象,而用戶一次可以物理連接。 例如,由于 DisplayPort 連接標準允許菊花鏈接,因此 GPU 驅動程序通常會為每個物理端口枚舉多個 DisplayPort 目標,以便考慮鏈接的監視器。
用于設置模式的對象
對于枚舉 DisplayTarget 對象、設置和查詢模式等,使用 DisplayPath 對象表示與 DisplayTarget 對象的連接。 顯示相同內容(克隆組)的路徑組由 DisplayView 表示,這些路徑聚合為 DisplayState。 因此,一個 DisplayState 對象可以表示一組完整的模式狀態,這些狀態可以發送到多個監視器的驅動程序。
已知限制
Windows.Devices.Display.Core API 有幾個已知限制(從 Windows 10 版本 2004 起):
- 目前無法解決間接顯示驅動程序(例如 Miracast、USB 顯示器適配器、軟件驅動程序)。 傳遞間接顯示適配器時,DisplayManager.CreateDisplayDevice 將失敗。
示例代碼
?