> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# D3D12_RESOURCE_DESC1 (XBOX Series 主機)

> 描述資源，例如紋理。

描述資源，例如紋理。此結構的使用範圍相當廣泛。

## 語法

```cpp theme={null}
typedef struct D3D12_RESOURCE_DESC1 {  
    D3D12_RESOURCE_DIMENSION Dimension;  
    UINT64 Alignment;  
    UINT64 Width;  
    UINT Height;  
    UINT16 DepthOrArraySize;  
    UINT16 MipLevels;  
    DXGI_FORMAT Format;  
    DXGI_SAMPLE_DESC SampleDesc;  
    D3D12_TEXTURE_LAYOUT Layout;  
    D3D12_RESOURCE_FLAGS Flags;  
    D3D12_MIP_REGION SamplerFeedbackMipRegion;  
} D3D12_RESOURCE_DESC1  
```

### 成員

*Dimension*\
類型：[D3D12\_RESOURCE\_DIMENSION](/zh-TW/reference/graphics/d3d12_x/enums/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](/zh-TW/reference/graphics/d3d12_xs/enums/dxgi_format)

指定 DXGI\_FORMAT 的其中一個成員。

*SampleDesc*\
類型：DXGI\_SAMPLE\_DESC

指定 DXGI\_SAMPLE\_DESC 結構。

*Layout*\
類型：[D3D12\_TEXTURE\_LAYOUT](/zh-TW/reference/graphics/d3d12_x/enums/d3d12_texture_layout)

指定 D3D12\_TEXTURE\_LAYOUT 的其中一個成員。

*Flags*\
類型：[D3D12\_RESOURCE\_FLAGS](/zh-TW/reference/graphics/d3d12_x/enums/d3d12_resource_flags)

以位元 OR 運算結合的旗標，為 D3D12\_RESOURCE\_FLAGS 列舉常數。

*SamplerFeedbackMipRegion*\
類型：[D3D12\_MIP\_REGION](/zh-TW/reference/graphics/d3d12_xs/structs/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 概觀](https://learn.microsoft.com/en-us/gaming/gdk/_content/gc/graphics/newfeatures/sfs/sf-api-design)

[d3d12\_xs](/zh-TW/reference/graphics/d3d12_xs/d3d12_xs_members)


## Related topics

- [D3D12_RESOURCE_DESC1](/reference/graphics/d3d12/structs/d3d12_resource_desc1_public.md)
- [D3D12_PROTECTED_RESOURCE_SESSION_DESC1](/reference/graphics/d3d12/structs/d3d12_protected_resource_session_desc1_public.md)
