> ## 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_STATES (XBOX One 系列)

> 指定資源與其使用方式相關的狀態。

指定資源與其使用方式相關的狀態。

## 語法

```cpp theme={null}
typedef enum D3D12_RESOURCE_STATES
{  
    D3D12_RESOURCE_STATE_COMMON = 0,  
    D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x0001,  
    D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x0002,  
    D3D12_RESOURCE_STATE_RENDER_TARGET = 0x0004,  
    D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x0008,  
    D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x0010,  
    D3D12_RESOURCE_STATE_DEPTH_READ = 0x0020,  
    D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x0040,  
    D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x0080,  
    D3D12_RESOURCE_STATE_STREAM_OUT = 0x0100,  
    D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x0200,  
    D3D12_RESOURCE_STATE_COPY_DEST = 0x0400,  
    D3D12_RESOURCE_STATE_COPY_SOURCE = 0x0800,  
    D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x1000,  
    D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x2000,  
    D3D12_RESOURCE_STATE_GENERIC_READ = D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER | D3D12_RESOURCE_STATE_INDEX_BUFFER | D3D12_RESOURCE_STATE_COPY_SOURCE | D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE | D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE,  
    D3D12_RESOURCE_STATE_PRESENT = 0,  
    D3D12_RESOURCE_STATE_PREDICATION = D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT,  
    D3D12XBOX_RESOURCE_STATE_PRESERVE_COMPRESSED_COLOR = 0x00400000,  
    D3D12XBOX_RESOURCE_STATE_PRESERVE_COMPRESSED_DEPTH = 0x00400000,  
    D3D12XBOX_RESOURCE_STATE_PRESERVE_COMPRESSED_STENCIL = 0x00800000,  
    D3D12XBOX_RESOURCE_STATE_PRESERVE_COMPRESSED_DEPTH_STENCIL = D3D12XBOX_RESOURCE_STATE_PRESERVE_COMPRESSED_DEPTH | D3D12XBOX_RESOURCE_STATE_PRESERVE_COMPRESSED_STENCIL,  
    D3D12XBOX_RESOURCE_STATE_PRESERVE_INDIRECT_COLOR_CLEAR = 0x01000000,  
    D3D12XBOX_RESOURCE_STATE_PRESERVE_SCATTERED_COLOR_FMASK = 0x02000000,  
    D3D12XBOX_RESOURCE_STATE_PRESERVE_EXPANDED_COLOR = 0x04000000,  
    D3D12XBOX_RESOURCE_STATE_PRESERVE_EXPANDED_DEPTH = 0x04000000,  
    D3D12XBOX_RESOURCE_STATE_PRESERVE_EXPANDED_STENCIL = 0x08000000,  
    D3D12XBOX_RESOURCE_STATE_PRESERVE_EXPANDED_DEPTH_STENCIL = D3D12XBOX_RESOURCE_STATE_PRESERVE_EXPANDED_DEPTH | D3D12XBOX_RESOURCE_STATE_PRESERVE_EXPANDED_STENCIL,  
} D3D12_RESOURCE_STATES  
```

## 常數

| 常數 | 描述 |
| - | - |
| D3D12\_RESOURCE\_STATE\_COMMON | 只有在跨不同類型的圖形引擎存取資源時，應用程式才應轉換為此狀態。具體而言，資源在 COPY 佇列上使用之前 (若先前在 DIRECT 或 COMPUTE 佇列上使用過)，或在 DIRECT 或 COMPUTE 佇列上使用之前 (若先前在 COPY 佇列上使用過)，都必須處於此狀態。在 DIRECT 與 COMPUTE 佇列之間存取資料時，沒有此限制。<br /><br />凡是使用隱含狀態轉換之處，都可以在 COPY 佇列上使用 COMMON 狀態。如需詳細資訊，請參閱[同步處理與多引擎](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/user-mode-heap-synchronization#multi-queue-resource-access)中的[多佇列資源存取](https://learn.microsoft.com/en-us/windows/win32/direct3d12/user-mode-heap-synchronization#multi-queue-resource-access)一節。此外，若要讓 CPU 存取有效，紋理必須處於 COMMON 狀態 (前提是紋理一開始就是在 CPU 可見的堆積中建立)。 |
| D3D12\_RESOURCE\_STATE\_VERTEX\_AND\_CONSTANT\_BUFFER | 當 3D 管線將子資源作為頂點緩衝區或常數緩衝區存取時，子資源必須處於此狀態。這是唯讀狀態。 |
| D3D12\_RESOURCE\_STATE\_INDEX\_BUFFER | 當 3D 管線將子資源作為索引緩衝區存取時，子資源必須處於此狀態。這是唯讀狀態。 |
| D3D12\_RESOURCE\_STATE\_RENDER\_TARGET | 資源用作轉譯目標。當子資源被轉譯，或以 [ClearRenderTargetView](https://learn.microsoft.com/en-us/windows/desktop/api/d3d12/nf-d3d12-id3d12graphicscommandlist-clearrendertargetview) 清除時，子資源必須處於此狀態。這是唯寫狀態。若要將轉譯目標作為著色器資源讀取，資源必須處於 D3D12\_RESOURCE\_STATE\_NON\_PIXEL\_SHADER\_RESOURCE 或 D3D12\_RESOURCE\_STATE\_PIXEL\_SHADER\_RESOURCE 狀態。 |
| D3D12\_RESOURCE\_STATE\_UNORDERED\_ACCESS | 資源用於無序存取。當 3D 管線透過無序存取檢視存取子資源時，子資源必須處於此狀態。呼叫 [ClearUnorderedAccessViewInt](https://learn.microsoft.com/en-us/windows/desktop/api/d3d12/nf-d3d12-id3d12graphicscommandlist-clearunorderedaccessviewuint) 或 [ClearUnorderedAccessViewFloat](https://learn.microsoft.com/en-us/windows/desktop/api/d3d12/nf-d3d12-id3d12graphicscommandlist-clearunorderedaccessviewfloat) 清除子資源時，子資源也必須處於此狀態。這是讀取/寫入狀態。 |
| D3D12\_RESOURCE\_STATE\_DEPTH\_WRITE | DEPTH\_WRITE 狀態與其他狀態互斥。當旗標 (請參閱 D3D12\_CLEAR\_FLAGS) 指出要清除指定的子資源時，或當子資源要用於可寫入的深度樣板檢視時 (請參閱 D3D12\_DSV\_FLAGS)，且 PSO 已啟用深度寫入 (請參閱 D3D12\_DEPTH\_STENCIL\_DESC)，請將其用於 [ClearDepthStencilView](https://learn.microsoft.com/en-us/windows/desktop/api/d3d12/nf-d3d12-id3d12graphicscommandlist-cleardepthstencilview)。 |
| D3D12\_RESOURCE\_STATE\_DEPTH\_READ | DEPTH\_READ 是可與其他狀態結合的狀態。當子資源位於唯讀深度樣板檢視中，或 D3D12\_DEPTH\_STENCIL\_DESC 的 DepthEnable 參數為 false 時，請使用此狀態。它可以與其他讀取狀態結合 (例如 D3D12\_RESOURCE\_STATE\_PIXEL\_SHADER\_RESOURCE)，以允許將資源用於深度或樣板測試，並在同一個繪製呼叫中由著色器存取。當繪製呼叫或清除命令將寫入深度時，使用此狀態是無效的。 |
| D3D12\_RESOURCE\_STATE\_NON\_PIXEL\_SHADER\_RESOURCE | 資源與像素著色器以外的著色器一起使用。在任何階段 (像素著色器階段除外) 透過著色器資源檢視讀取子資源之前，子資源必須處於此狀態。只要資源也設定了 D3D12\_RESOURCE\_STATE\_PIXEL\_SHADER\_RESOURCE 旗標，您仍可在具有此旗標的情況下於像素著色器中使用該資源。這是唯讀狀態。 |
| D3D12\_RESOURCE\_STATE\_PIXEL\_SHADER\_RESOURCE | 資源與像素著色器一起使用。在像素著色器透過著色器資源檢視讀取子資源之前，子資源必須處於此狀態。這是唯讀狀態。 |
| D3D12\_RESOURCE\_STATE\_STREAM\_OUT | 資源與串流輸出一起使用。當 3D 管線將子資源作為串流輸出目標存取時，子資源必須處於此狀態。這是唯寫狀態。 |
| D3D12\_RESOURCE\_STATE\_INDIRECT\_ARGUMENT | 資源用作間接引數。當子資源用作傳遞給間接繪製方法 ID3D12GraphicsCommandList::ExecuteIndirect 的引數緩衝區時，子資源必須處於此狀態。這是唯讀狀態。 |
| D3D12\_RESOURCE\_STATE\_COPY\_DEST | 資源用作複製作業的目的地。當子資源用作複製或 blt 作業的目的地時，子資源必須處於此狀態。這是唯寫狀態。 |
| D3D12\_RESOURCE\_STATE\_COPY\_SOURCE | 資源用作複製作業的來源。當子資源用作複製或 blt 作業的來源時，子資源必須處於此狀態。這是唯讀狀態。 |
| D3D12\_RESOURCE\_STATE\_RESOLVE\_DEST | 資源用作解析作業的目的地。 |
| D3D12\_RESOURCE\_STATE\_RESOLVE\_SOURCE | 資源用作解析作業的來源。 |
| D3D12\_RESOURCE\_STATE\_RAYTRACING\_ACCELERATION\_STRUCTURE | |
| D3D12\_RESOURCE\_STATE\_GENERIC\_READ | 這是上傳堆積必要的起始狀態。應用程式應盡可能避免此狀態，而是僅將資源轉換為實際使用的狀態。 |
| D3D12\_RESOURCE\_STATE\_PRESENT | 與 D3D12\_RESOURCE\_STATE\_COMMON 同義。 |
| D3D12\_RESOURCE\_STATE\_PREDICATION | 用於述詞。 |
| D3D12XBOX\_RESOURCE\_STATE\_PRESERVE\_COMPRESSED\_COLOR | 保留壓縮的色彩資料。以下是此值的幾個使用範例：\{::nomarkdown}<ul><li>當紋理不僅經過 DCC 壓縮，而且還是「紋理相容」時，您想要略過 DCC。</li><li>MSAA 紋理經過 fmask 壓縮，而您想要手動解析它。</li></ul> |
| D3D12XBOX\_RESOURCE\_STATE\_PRESERVE\_COMPRESSED\_DEPTH | 保留壓縮的深度資料。此值的一個使用範例是：當紋理經過深度壓縮且為「紋理相容」時，略過深度解壓縮。 |
| D3D12XBOX\_RESOURCE\_STATE\_PRESERVE\_COMPRESSED\_STENCIL | 保留壓縮的樣板資料。此值的一個使用範例是：當只需要解壓縮深度資料時，略過樣板資料的解壓縮；在某些時候，驅動程式可能會自動執行此動作。 |
| D3D12XBOX\_RESOURCE\_STATE\_PRESERVE\_COMPRESSED\_DEPTH\_STENCIL | 保留壓縮的深度樣板資料。 |
| D3D12XBOX\_RESOURCE\_STATE\_PRESERVE\_INDIRECT\_COLOR\_CLEAR | 保留間接清除色彩資料。以下是此值可能的使用範例：紋理經過 cmask **快速清除**，而您想要略過**快速清除消除**，改為手動檢查 cmask。如需詳細資訊，請參閱 [Cmask 解碼](https://learn.microsoft.com/en-us/gaming/gdk/_content/gc/graphics/overviews/cmask-decoding)。 |
| D3D12XBOX\_RESOURCE\_STATE\_PRESERVE\_SCATTERED\_COLOR\_FMASK | 保留分散色彩 fmask 資料。以下是此值可能的使用範例：MSAA 紋理使用壓縮的 fmask，且 fmask 建立為**紋理相容**，以略過 fmask 解壓縮。 |
| D3D12XBOX\_RESOURCE\_STATE\_PRESERVE\_EXPANDED\_COLOR | 保留展開的色彩資料。轉換為轉譯目標時，請勿重新啟用壓縮。 |
| D3D12XBOX\_RESOURCE\_STATE\_PRESERVE\_EXPANDED\_DEPTH | 保留展開的深度資料。轉換為深度緩衝區時，請勿重新啟用壓縮。 |
| D3D12XBOX\_RESOURCE\_STATE\_PRESERVE\_EXPANDED\_STENCIL | 保留展開的樣板資料。轉換為樣板緩衝區時，請勿重新啟用壓縮。 |
| D3D12XBOX\_RESOURCE\_STATE\_PRESERVE\_EXPANDED\_DEPTH\_STENCIL | 保留展開的深度與樣板資料。 |

## 備註

下列函式會使用此列舉：

* [CreateCommittedResource](https://learn.microsoft.com/en-us/windows/desktop/api/d3d12/nf-d3d12-id3d12device-createcommittedresource)
* [CreatePlacedResource](https://learn.microsoft.com/en-us/windows/desktop/api/d3d12/nf-d3d12-id3d12device-createplacedresource)
* [CreateReservedResource](https://learn.microsoft.com/en-us/windows/desktop/api/d3d12/nf-d3d12-id3d12device-createreservedresource)

適用於 XBOX One 的 Microsoft Game Development Kit (GDK) 定義了此列舉中的擴充成員，從 D3D12XBOX\_RESOURCE\_STATE\_PRESERVE\_COMPRESSED\_COLOR 開始。如需此列舉的非 XBOX 專用版本，請參閱 [D3D12\_RESOURCE\_STATES](https://learn.microsoft.com/en-us/windows/desktop/api/d3d12/ne-d3d12-d3d12_resource_states)。

## 需求

**標頭：** d3d12\_x.h

**支援的平台：** XBOX One 系列

## 另請參閱

[d3d12\_x](/zh-TW/reference/graphics/d3d12_x/d3d12_x_members)
[Cmask 解碼](https://learn.microsoft.com/en-us/gaming/gdk/_content/gc/graphics/overviews/cmask-decoding)


## Related topics

- [D3D12_RESOURCE_TRANSITION_BARRIER](/reference/graphics/d3d12/structs/d3d12_resource_transition_barrier_public.md)
- [D3D12_META_COMMAND_PARAMETER_DESC](/reference/graphics/d3d12/structs/d3d12_meta_command_parameter_desc_public.md)
- [CreateReservedResource](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createreservedresource_public.md)
- [CreateReservedResource1 (XBOX Series consoles)](/reference/graphics/d3d12/interfaces/id3d12device4/methods/id3d12device4_createreservedresource1_public.md)
