Share via


資源

資源是 Direct3D 管線可以存取的記憶體中的區域。 為了讓管線有效地存取記憶體,提供給管線的資料 (例如,輸入幾何、著色器資源及紋理) 必須儲存在資源中。 所有 Direct3D 資源衍生兩種類型的資源︰緩衝區或紋理。 每個管線階段可使用多達 128 種資源。

通常,每個應用程式都會建立許多資源。 資源的範例包括:頂點緩衝區、索引緩衝區、常數緩衝區、紋理和著色器資源。 許多選項會用來判斷資源的使用方式。 您可以建立具有強型別或不具型別的資源;控制資源是否要同時具備讀寫存取權限;以及將資源僅提供給 CPU、GPU 或兩者存取。 當然,速度和功能之間需要做出取捨:允許資源具備越多功能,預期享有的效能就越少。

由於應用程式通常會使用許多紋理,Direct3D 也備有紋理陣列的概念,可簡化紋理管理。 紋理陣列包含一個或多個紋理 (全部都隸屬相同的類型和維度),可從應用程式內部或透過著色器編製索引。 紋理陣列可讓您使用單一介面搭配多個索引,以存取多個紋理。 您可以建立所需數量的紋理陣列,以視需要來管理不同紋理類型。

建立應用程式將使用的資源後,您就能將每個資源連接或繫結到將會使用它們的管線階段。 這會透過呼叫繫結 API 來完成,該 API 會取得資源的指標。 由於多個管線階段可能需要存取相同的資源,因此,Direct3D 設有資源檢視的概念。 檢視會識別可存取的資源部分。 您可以建立 m 個檢視或資源,並將其繫結至 n 個管線階段,只要有依循共用資源的繫結規則即可 (若未依循,則執行階段將於編譯期間產生錯誤)。

資源檢視會提供一般模型,以利做為存取資源 (例如紋理或緩衝區) 之用。 由於您可以使用檢視來告知執行階段需要存取哪些資料,以及如何加以存取,資源檢視可讓您建立不具型別的資源。 這表示,您可以在編譯期間建立指定大小的資源,然後在資源繫結至管線時,宣告資源中的資料類型。 檢閱會公開許多可用來使用資源的功能,例如讀回著色器中的深度/樣板表面,藉此在單一傳遞中產生動態立方體貼圖,並同步轉譯至磁碟區中的多個配量。

本節內容

主題 說明

資源類型

不同類型的資源會具備不同的配置 (或記憶體使用量)。 Direct3D 管線使用的所有資源都源自於兩種基本資源類型:緩衝區紋理。 緩衝區為原始資料 (元素) 的集合,紋理則為紋理像素 (紋理元素) 的集合。

選擇資源

資源為 3D 管線所使用之資料的集合。 建立資源並定義其行為,為著手設計應用程式的第一步。 本指南將說明為應用程式選擇所需資源的基本主題。

複製和存取資源資料

使用情況旗標會指出應用程式計畫如何使用資源資料,以盡可能將資源配置給記憶體中最講求效能的區域。 資源資料會在資源之間進行複製,以利 CPU 或 GPU 在不影響效能的情況下加以存取。

紋理檢視

在 Direct3D 中,紋理資源會使用檢視加以存取,而檢視則為硬體用來解譯記憶體資源的機制。 檢視可讓特定管線階段使用應用程式想要的表現方式,僅存取其所需要的子資源

 

座標系統

Direct3D 圖形學習指南

浮點規則

資料類型轉換