Skip to main content
描述資源,例如紋理。此結構的使用範圍相當廣泛。

語法

成員

Dimension
類型:D3D12_RESOURCE_DIMENSION
D3D12_RESOURCE_DIMENSION 的其中一個成員,指定資源的維度 (例如 D3D12_RESOURCE_DIMENSION_TEXTURE1D),或指定其是否為緩衝區 ((D3D12_RESOURCE_DIMENSION_BUFFER)。 Alignment
類型:UINT64
指定對齊 (以位元組為單位)。 Width
類型:UINT64
指定資源的寬度。 Height
類型:UINT
指定資源的高度。 DepthOrArraySize
類型:UINT16
若資源為 3D,則指定資源的深度;若為 1D 或 2D 資源的陣列,則指定陣列大小。 MipLevels
類型:UINT16
指定 MIP 層級的數目。 Format
類型:DXGI_FORMAT
指定 DXGI_FORMAT 的其中一個成員。 SampleDesc
類型:DXGI_SAMPLE_DESC
指定 DXGI_SAMPLE_DESC 結構。 Layout
類型:D3D12_TEXTURE_LAYOUT
指定 D3D12_TEXTURE_LAYOUT 的其中一個成員。 Flags
類型:D3D12_RESOURCE_FLAGS
以位元 OR 運算結合的旗標,為 D3D12_RESOURCE_FLAGS 列舉常數。 SamplerFeedbackMipRegion
類型:D3D12_MIP_REGION
對於取樣器回饋資源,描述一個回饋紋素在所追蹤資源中所代表的大小。

備註

將此結構搭配下列項目使用:
  • ID3D12Resource::GetDesc
  • ID3D12Device::GetResourceAllocationInfo
  • ID3D12Device::CreateCommittedResource
  • ID3D12Device::CreatePlacedResource
  • ID3D12Device::CreateReservedResource
  • ID3D12Device::GetCopyableFootprints
如需數個協助程式函式,請參閱 D3D12 的協助程式結構與函式。 兩種常見的資源是緩衝區和紋理,兩者都使用此結構,但欄位的用法大不相同。

緩衝區

緩衝區是連續的記憶體區域。Width 可介於 1 與下列值之間:對於保留資源為 D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT 的 MaxGPUVirtualAddressBitsPerResource 欄位,對於認可資源則為 MaxGPUVirtualAddressBitsPerProcess 欄位。不過,GPU 虛擬位址空間、記憶體常駐預算 (請參閱 IDXGIAdapter3::QueryVideoMemoryInfo) 和/或系統記憶體可能很容易先耗盡。 Alignment 必須是 64KB (D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT) 或 0,而 0 實際上就是 64KB。 Height、DepthOrArraySize 和 MipLevels 必須為 1。 Format 必須是 DXGI_FORMAT_UNKNOWN。 SampleDesc.Count 必須為 1,且 Quality 必須為 0。 Layout 必須是 D3D12_TEXTURE_LAYOUT_ROW_MAJOR,因為應用程式了解緩衝區記憶體配置,且以列為主的紋理資料通常會透過緩衝區進行封送處理。 除了少數例外情況之外,應用程式仍必須為緩衝區正確填寫 Flags。不過,應用程式可以使用最多的功能支援,而不必擔心對緩衝區效率的影響。flags 欄位的用途是控制與紋理相關的屬性。

紋理

紋理是紋素在連續記憶體區域中的多維度排列,經過大幅最佳化,以將轉譯和取樣的頻寬最大化。紋理大小難以預測,且因介面卡而異。應用程式必須使用 ID3D12Device::GetResourceAllocationInfo 來正確了解其大小。 並非每種格式都正交支援 TEXTURE1D、TEXTURE2D 和 TEXTURE3D。請參閱 D3D12_FORMAT_SUPPORT1 中 D3D12_FORMAT_SUPPORT1_TEXTURE1D、D3D12_FORMAT_SUPPORT1_TEXTURE2D 和 D3D12_FORMAT_SUPPORT1_TEXTURE3D 的用法。 Width、Height 和 DepthOrArraySize 必須介於 1 與特定功能層級和紋理維度所支援的最大維度之間。不過,GPU 虛擬位址空間、記憶體常駐預算 (請參閱 IDXGIAdapter3::QueryVideoMemoryInfo) 和/或系統記憶體可能很容易先耗盡。對於壓縮格式,這些維度是邏輯維度。例如:
  • 對於 TEXTURE1D:
    • 在低於 11_0 的功能層級上,Width 必須小於或等於 D3D10_REQ_TEXTURE1D_U_DIMENSION;在 11_0 或更高的功能層級上,則必須小於或等於 D3D11_REQ_TEXTURE1D_U_DIMENSION。
    • Height 必須為 1。
    • DepthOrArraySize 會解譯為陣列大小,在低於 11_0 的功能層級上必須小於或等於 D3D10_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION,在 11_0 或更高的功能層級上則必須小於或等於 D3D11_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION。
  • 對於 TEXTURE2D:
    • 在低於 11_0 的功能層級上,Width 和 Height 必須小於或等於 D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION;在 11_0 或更高的功能層級上,則必須小於或等於 D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION。
    • DepthOrArraySize 會解譯為陣列大小,在低於 11_0 的功能層級上必須小於或等於 D3D10_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION,在 11_0 或更高的功能層級上則必須小於或等於 D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION。
  • 對於 TEXTURE3D:
    • 在低於 11_0 的功能層級上,Width、Height 和 DepthOrArraySize 必須小於或等於 D3D10_REQ_TEXTURE3D_U_V_OR_W_DIMENSION;在 11_0 或更高的功能層級上,則必須小於或等於 D3D11_REQ_TEXTURE2D_U_V_OR_W_DIMENSION。
    • DepthOrArraySize 會解譯為深度。
下列注意事項適用於所有紋理大小。

Alignment

Alignment 可以是 0、4KB、64KB 或 4MB 其中之一。 如果 Alignment 設為 0,執行階段會對 MSAA 紋理使用 4MB,對其他所有項目則使用 64KB。當紋理很小時,應用程式可以為幾種紋理類型選擇比這些預設值更小的對齊。具有 UNKNOWN 配置和 MSAA 的紋理可以使用 64KB 對齊來建立 (如果通過下文詳述的小型大小限制)。 具有 UNKNOWN 配置、不具 MSAA,且沒有轉譯目標或深度樣板旗標的紋理,可以使用 4KB Alignment 來建立 (同樣須通過小型大小限制)。 當最詳細 mip 層級的估計大小總計等於或小於較大的對齊限制時,應用程式可以建立對齊較小的資源。執行階段會使用與架構無關的大小估計機制,模仿標準 swizzle 和 D3D12 並排資源的大小計算方式。不過,在此類計算中,圖格大小會是較小的對齊限制。以非轉譯目標且非深度樣板的紋理為例,執行階段會假設接近等邊的 4KB 圖格形狀,並計算最詳細 mip 層級所需的圖格數目。如果圖格數目等於或小於 16,則應用程式可以建立 4KB 對齊的資源。因此,只要寬度和高度對於特定格式和 MSAA 而言夠小,任何陣列大小和任何 mip 層級數目的 mip 化 tex2d 陣列都可以是 4KB。

MipLevels

MipLevels 可以是 0,或是 1 到 Width、Height 和 DepthOrArraySize 維度所支援的最大 mip 層級數。使用 0 時,API 會自動計算所支援的最大 mip 層級數並加以使用。但是,某些資源和堆積屬性不允許 mip 層級,因此應用程式必須將值指定為 1。 如需各格式的限制,請參閱 D3D12_FORMAT_SUPPORT1 的 D3D12_FORMAT_SUPPORT1_MIP 欄位。MSAA 資源、具有 D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER 的紋理,以及具有 D3D12_HEAP_FLAG_ALLOW_DISPLAY 的堆積都不允許 mip 層級。

Format

Format 必須是裝置功能層級所支援的有效格式。

SampleDesc

大於 1 的 SampleDesc.Count 和/或非零的 Quality 僅支援用於 TEXTURE2D,且必須設定 D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET 或 D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL。 下列項目不受支援:
  • D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE,
  • D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS,
  • D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS,
  • D3D12_HEAP_FLAG_ALLOW_DISPLAY
如需判斷有效的 Count 和 Quality 值,請參閱 D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS。

需求

標頭: d3d12_xs.h
支援的平台: XBOX Series 主機

另請參閱

取樣器回饋 Direct3D 12 API 概觀 d3d12_xs
Last modified on October 6, 2026