語法
typedef enum D3D12_STATE_OBJECT_FLAGS
{
D3D12_STATE_OBJECT_FLAG_NONE = 0,
D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 1,
D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 2
} D3D12_STATE_OBJECT_FLAGS
常數
| 常數 | 描述 |
|---|---|
| D3D12_STATE_OBJECT_FLAG_NONE | 沒有狀態物件限制條件。 |
| D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS | 此旗標僅適用於集合類型的狀態物件,否則會忽略此旗標。 此集合的匯出項目可以有未解析的參考 (相依性),這些參考必須在集合包含於容器狀態物件 (例如光線追蹤管線狀態物件 (RTPSO)) 時解析 (定義)。 這包括依賴外部定義的子物件關聯,將外部子物件 (例如根簽章) 關聯到本機匯出項目。 若沒有此旗標,此集合中的所有匯出項目都必須在本機完整解析其相依性,包括在本機定義任何必要的子物件關聯。 進階的實作/驅動程式將擁有足夠的資訊來編譯集合中的程式碼,而不需要保留任何未編譯的程式碼 (除非已設定 D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS 旗標),因此當集合用於容器狀態物件 (例如 RTPSO) 時,驅動程式只需執行最少的工作,理想情況下最多只需一次「低成本」的連結。 |
| D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS | 此旗標僅適用於集合類型的狀態物件,否則會忽略此旗標。 如果此集合包含在另一個狀態物件 (例如 RTPSO) 中,容器狀態物件其餘部分中的著色器/函式可以依賴 (例如呼叫) 此集合的匯出項目。 若沒有此旗標 (預設),容器狀態物件 (例如 RTPSO) 的其他部分無法直接參考此集合的匯出項目。 這可以稍微減少集合的記憶體使用量,因為驅動程式不需要為了萬一被某個外部函式呼叫 (屆時會將所有程式碼一起編譯) 而在集合中保留未編譯的程式碼。 不過,如果尚未在本機為此集合中的程式碼定義所有必要的子物件關聯,驅動程式可能還無法編譯著色器程式碼,而且可能仍需要保留未編譯的程式碼。 在外部定義、將外部子物件關聯到本機匯出項目的子物件關聯,不算是對本機定義的外部相依性,因此此旗標存在與否,不影響是否允許該關聯。另一方面,如果目前的集合為本機定義的子物件定義了與外部匯出項目 (例如著色器) 的子物件關聯,則算是對本機定義的外部相依性,必須設定此旗標。 無論此旗標存在與否,如果容器狀態物件 (例如 RTPSO) 匯出了集合中的著色器進入點 (例如命中群組或遺漏著色器),這些進入點對該容器狀態物件而言都是可見的進入點。 若為 RTPSO,匯出的進入點可用於光線追蹤的著色器表。 |
需求
標頭: d3d12_xs.h 或 d3d12_x.h程式庫: d3d12_xs.lib 或 d3d12_x.lib
支援的平台: XBOX Series 主機與 XBOX One 系列
