編輯

共用方式為


DirectX 11 移植常見問題

關於將遊戲移植到 通用 Windows 平台 (UWP) 的常見問題解答。

移植我的遊戲是否會成為 API 方法的一組搜尋和取代作業,或者我需要規劃更周到的移植程式嗎?

Direct3D 11 是 Direct3D 9 的重大升級。 有數個範例轉變,包括虛擬化圖形配接器的個別 API 及其內容,以及裝置資源的新多型層。 您的遊戲仍然可以以基本上相同的方式使用圖形硬體,但您必須瞭解新的 Direct3D 11 API 架構,並更新圖形程式代碼的每個部分,以使用正確的 API 元件。 請參閱 移植概念和考慮

新的裝置內容為何? 我應該以 Direct3D 11 裝置、裝置內容或兩者取代 Direct3D 9 裝置嗎?

Direct3D 裝置現在可用來在視訊記憶體中建立資源,而裝置內容則用來設定管線狀態併產生轉譯命令。 如需詳細資訊,請參閱: Direct3D 9 以來最重要的變更為何?

我是否必須更新 UWP 的遊戲定時器?

QueryPerformanceCounter 以及 QueryPerformanceFrequency 仍然是實作 UWP app 遊戲定時器的最佳方式。

您應該瞭解定時器和 UWP 應用程式生命週期的細微差別。 暫停/繼續與玩家重新啟動桌面遊戲不同,因為您的遊戲會從上次播放遊戲的時間開始繼續快照集。 如果經過大量時間,例如,幾周后,某些遊戲定時器實作可能無法正常運作。 您可以使用應用程式生命週期事件,在遊戲繼續時重設定時器。

仍在使用 RDTSC 指示的遊戲需要升級。 請參閱 遊戲計時和多核心處理器

我的遊戲程序代碼是以 D3DX 和 DXUT 為基礎。 是否有任何可協助我移轉程式代碼的可用專案?

DirectX Tool Kit (DirectXTK) 社群專案提供協助程序類別,以搭配 Direct3D 11 使用。

如何? 維護桌面和Microsoft市集的程式代碼路徑?

Chuck Walbourn 標題為 遊戲的雙重使用編碼技術 的文章系列提供在桌面與Microsoft市集程式代碼路徑之間共用程式代碼的指引。

如何? 我的 DirectX UWP 應用程式中載入映射資源?

載入映像有兩個 API 路徑:

  • 內容管線會將影像轉換成作為 Direct3D 紋理資源的 DDS 檔案。 請參閱 在您的遊戲或應用程式中使用 3D 資產。
  • Windows 映射元件可用來載入各種格式的影像,並可用於 Direct2D 位陣陣圖以及 Direct3D 紋理資源。

您也可以從 DirectXTKDirectXTex 使用 DDSTextureLoader 和 WICTextureLoader。

DirectX SDK 在哪裡?

DirectX SDK 包含在 Windows SDK 中。 與 Windows SDK 分開的最新 DirectX SDK 是在 2010 年 6 月。 Direct3D 範例位於程式代碼庫中,以及其餘的 Windows 應用程式範例。

DirectX 可轉散發套件呢?

Windows SDK 中絕大多數元件都已包含在支援的操作系統版本中,或沒有 DLL 元件(例如 DirectXMath)。 UWP app 可以使用的所有 Direct3D API 元件都已可供您的遊戲使用;您不需要轉散發它們。

Win32 傳統型應用程式仍然使用 DirectSetup,因此如果您也正在升級遊戲桌面版本,請參閱 適用於遊戲開發人員的 Direct3D 11 部署。

在離開效果之前,我是否有任何方法可以將桌面程序代碼更新為 DirectX 11?

請參閱 Direct3D 11 更新的效果。 效果 11 有助於移除舊版 DirectX SDK 標頭的相依性;其用途是作為移植輔助功能,且只能與傳統型應用程式搭配使用。

是否有將 DirectX 8 遊戲移植到 UWP 的路徑?

是的:

我可以將 DirectX 10 或 11 遊戲移植到 UWP 嗎?

DirectX 10.x 和 11 桌面遊戲很容易移植到 UWP。 請參閱 移轉至 Direct3D 11

如何? 在多監視器系統中選擇正確的顯示裝置嗎?

用戶選取顯示您 app 的監視。 讓 Windows 藉由呼叫 D3D11CreateDevice,並將第一個參數設定為 nullptr 來提供正確的配接器 然後取得裝置的IDXGIDevice介面、呼叫 GetAdapter 並使用 DXGI 配接器來建立交換鏈結。

如何? 開啟反鋸齒?

當您建立 Direct3D 裝置時,會啟用反鋸齒功能(多重取樣)。 呼叫 CheckMultisampleQualityLevels 來列舉多重取樣支援,然後在呼叫 CreateSurface 時,在 DXGI_SAMPLE_DESC 結構中設定多重取樣選項。

我的遊戲會使用多線程和/或延後轉譯來轉譯。 Direct3D 11 需要知道什麼?

請流覽 Direct3D 11 中的多線程簡介以開始使用。 如需主要差異的清單,請參閱 Direct3D 版本之間的線程差異。 請注意,延後轉譯會使用裝置 延後的內容而不是立即的內容

我可以在哪裡深入瞭解 Direct3D 9 以來可程式化的管線?

我應該使用什麼,而不是模型的 .x 檔案格式?

雖然我們沒有 .x 檔案格式的官方取代專案,但許多範例都會使用 SDKMesh 格式。 Visual Studio 也有內容管線,可將數種熱門格式編譯成 CMO 檔案,以從 Visual Studio 3D 入門套件載入程式碼,或使用 DirectXTK 載入

如何? 偵錯我的著色器?

Microsoft Visual Studio 包含 DirectX 圖形的診斷工具。 請參閱 偵錯 DirectX 圖形

x 函式的 Direct3D 11 對等項目為何?

DXGI\_FORMAT與 y 表面格式的對等項目為何?