資源 (Direct3D 10)

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

每個應用程式通常會建立許多資源。 資源的範例包括︰頂點緩衝區、索引緩衝區、常數緩衝區、紋理和著色器資源。 有幾個決定資源如何使用的選項。 您可以建立強類型或無類型的資源;您可以控制資源是否擁有讀取和寫入兩項存取權;您可以讓資源只供 CPU、GPU 或二者存取。 當然,會有速度和功能上的取捨,您若允許資源擁有更多的功能,您可預期的效能會更低。

由於應用程式通常會使用許多紋理,因此 Direct3D 也會介紹紋理陣列的概念,以簡化紋理管理。 紋理陣列包含一個或多個紋理 (所有類型與大小均相同),可以從應用程式中或由著色器編制索引。 紋理陣列可讓您使用具有多個索引的單一介面來存取許多紋裡。 您可以依需求建立任意數量的紋理陣列來管理不同紋理類型。

當您建立好應用程式將使用的資源之後,您會連接或繫結每個資源到將使用它們的管線階段。 您可以呼叫繫結 API 來完成這項作業,也就是指向資源。 由於多個管線階段可能需要存取相同的資源,因此 Direct3D 10 引進了資源檢視的概念。 檢視會辨識可存取的部分資源。 您可以建立 m 檢視或資源並將它們繫結到 n 管線階段,假設是您遵循共用資源的繫結規則 (若不這麼做,執行階段會在編譯時產生錯誤)。

資源檢視提供一般模型,可供存取資源 (紋理、緩衝區等) 。 因為您可以使用檢視來告訴執行階段進行存取以及如何存取,所以資源檢視可讓您建立無類型的資源。 也就是您可以在編譯時建立指定大小的資源,然後在資源繫結到管線時宣告資源內的資料類型。 檢視會公開許多使用資源的新功能,例如能夠讀取著色器中的回溯深度/樣板表面、在單一傳遞中產生動態 Cubemap,以及同時轉譯至磁片區的多個配量。

若要深入瞭解基本資源類型、紋理陣列,以及如何建立和使用資源,請參閱下列其他主題:

Direct3D 10 的程式設計指南