D3D10_USAGE列舉 (d3d10.h)
識別轉譯期間的預期資源使用。 使用量會直接反映 CPU 和/或 GPU 是否可存取資源。
Syntax
typedef enum D3D10_USAGE {
D3D10_USAGE_DEFAULT = 0,
D3D10_USAGE_IMMUTABLE = 1,
D3D10_USAGE_DYNAMIC = 2,
D3D10_USAGE_STAGING = 3
} ;
常數
D3D10_USAGE_DEFAULT 值: 0 需要 GPU 讀取和寫入存取權的資源。 這可能是最常見的使用方式選擇。 |
D3D10_USAGE_IMMUTABLE 值: 1 只能由 GPU 讀取的資源。 它無法由 GPU 寫入,而且完全無法由 CPU 存取。 建立資源時必須初始化此類型的資源,因為它無法在建立之後變更。 |
D3D10_USAGE_DYNAMIC 值: 2 GPU 和 CPU (只能寫入) 的資源。 動態資源是每個畫面至少由CPU更新一次之資源的絕佳選擇。 若要寫入 CPU 上的動態資源,請使用 Map 方法。 您可以使用 CopyResource 或 CopySubresourceRegion 寫入 GPU 上的動態資源。 |
D3D10_USAGE_STAGING 值: 3 支援從 GPU 將) 複製到 CPU (資料傳輸的資源。 |
備註
應用程式會識別資源在資源描述中用來 (其使用量) 的方式。 建立資源有數個結構,包括:D3D10_TEXTURE1D_DESC、D3D10_TEXTURE2D_DESC、D3D10_TEXTURE3D_DESC、D3D10_BUFFER_DESC和D3DX10_IMAGE_LOAD_INFO。
Direct3D 9 與 Direct3D 10 之間的差異: 在 Direct3D 9 中,您會使用 D3DPOOL) ,指定資源在資源建立時間 (應建立的記憶體類型。 這是應用程式的工作,可決定哪些記憶體集區可提供最佳功能與效能組合。 在 Direct3D 10 中,應用程式不再指定集區 () 建立資源的記憶體類型。 相反地,您可以指定資源的預期使用量,並讓運行時間與驅動程式和記憶體管理員一起 () 選擇可達到最佳效能的記憶體類型。 |
資源使用限制
每個使用方式都會決定功能與效能之間的取捨。 一般而言,資源存取是使用下列 API 來完成。- CPU 存取是使用 ID3D10Buffer::Map、ID3D10Texture1D::Map、ID3D10Texture2D::Map 或 ID3D10Texture3D::Map 來完成 CPU 存取
- GPU 存取是使用 CopySubresourceRegion、 CopyResource 或 UpdateSubresource 來完成。
資源使用狀況 | Default | 動態 | 固定 | 預備 |
---|---|---|---|---|
GPU-Read | 是 | 是¹ | 是 | 是1, 2 |
GPU-Write | 是¹ | 是1, 2 | ||
CPU-Read | 是1, 2 | |||
CPU-Write | 是 | 是1, 2 |
- 1 - 這僅限於 CopySubresourceRegion、 CopyResource 和 UpdateSubresource。
- 2 - 不能是深度樣板緩衝區或多重取樣轉譯目標。
資源系結選項
若要將效能最大化,並非所有資源使用選項都可以當做管線的輸入或輸出資源使用。 下表會識別這些限制。資源可以系結為 | Default | 動態 | 固定 | 預備 |
---|---|---|---|---|
階段的輸入 | 是,是 | 是⁴ | 是 | |
階段的輸出 | 是,是 |
規格需求
需求 | 值 |
---|---|
標頭 | d3d10.h |