共用方式為


D3D12_STATE_OBJECT_FLAGS列舉 (d3d12.h)

指定狀態對象的條件約束。 在 D3D12_STATE_OBJECT_CONFIG 結構中使用這個列舉的值。

Syntax

typedef enum D3D12_STATE_OBJECT_FLAGS {
  D3D12_STATE_OBJECT_FLAG_NONE = 0,
  D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1,
  D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2,
  D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS
} ;

常數

 
D3D12_STATE_OBJECT_FLAG_NONE
值: 0
沒有狀態物件條件約束。
D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS
值: 0x1
此旗標僅適用於類型集合的狀態物件。 否則會忽略此旗標。

允許從這個集合導出的參考 (相依性) ) ,當集合包含在包含的狀態物件中時,必須解析 (定義) ,例如 (RTPSO) 的光線追蹤管線狀態物件。 這包括視外部定義的子對象關聯而定,將外部子對象關聯 (例如根簽章) 到本機匯出。

如果沒有此旗標,此集合中的所有導出都必須完全在本機解析其相依性,包括本機定義的任何必要子對象關聯。 進階實作/驅動程式將有足夠的資訊來編譯集合中的程序代碼,而且不需要保留任何未編譯的程式代碼 (,除非 已設定D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS 旗標) ,因此當集合用於包含的狀態物件時, (例如 RTPSO) , 驅動程序必須完成最少的工作,最好是「便宜」連結。
D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS
值: 0x2
此旗標僅適用於類型集合的狀態物件。 否則會忽略此旗標。

如果這個集合包含在另一個狀態物件 (例如 RTPSO) ,則允許包含狀態對象其餘部分的著色器/函式相依於 (例如呼叫) 從這個集合導出。

如果沒有此旗標 (預設) ,來自此集合的匯出無法由包含狀態 (物件的其他部分直接參考,例如 RTPSO) 。 這可稍微減少集合的記憶體使用量,因為驅動程式不需要讓集合中的未編譯程式代碼保持在關閉機率,可能會由一些外部函式呼叫,然後一起編譯所有程序代碼。 也就是說,如果這個集合中的程式代碼尚未在本機定義所有必要的子對象關聯,驅動程式可能無法編譯著色器程序代碼,而且可能仍然需要保留未編譯的程序代碼。

外部定義的子對象關聯會將外部子物件與本機匯出產生關聯,不會計入本機定義的外部相依性,因此存在或缺少此旗標不會影響是否允許關聯。 另一方面,如果目前的集合定義本機定義的子物件與外部匯出 (的子對象關聯,例如著色器) ,則視為本機定義的外部相依性,而且必須設定此旗標。

不論此旗標是否存在,著色器進入點 (例如點擊群組或遺漏著色器) 集合中的專案點都會顯示為包含狀態對象的進入點 (,例如 RTPSO) 。 在 RTPSO 的情況下,導出的進入點可用於著色器數據表中的光線追蹤。

規格需求

需求
標頭 d3d12.h