語法
成員
SizeInBytes類型:SIZE_T SAL:
In
指定 pPipelineStateSubobjectStream 成員所指向之不透明資料結構的大小 (以位元組為單位)。
pPipelineStateSubobjectStream類型:void * SAL:
In_reads(Inexpressible(“Dependentonsizeofsubobjects”))
指定以位元組資料流描述任意管線狀態子物件之資料結構的位址。
備註
請將此結構與 ID3D12Device2::CreatePipelineState 方法搭配使用,以建立管線狀態物件。 所提供資料流的格式應由交替的 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE 及其對應的子物件類型組成 (例如,D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER 與 D3D12_RASTERIZER_DESC 配對)。在對齊方面,D3D12 執行階段預期子物件是個別的列舉-結構配對,而不是連續的欄位集合。它也預期子物件對齊系統的自然字組對齊。這可以使用alignas(void*),或是將列舉 + 子物件與 void* 組成 union 來達成。
僅將 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE 與 void* 組成聯集是不夠的,因為這會導致某些子物件未對齊。例如,D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY 後面接著 D3D12_PRIMITIVE_TOPOLOGY_TYPE 列舉。如果子物件類型與 void* 組成聯集,則這 2 個成員之間會有額外的填補,導致資料流損毀。因此,當無法使用
alignas 時,您應該將整個子物件結構與 void* 組成聯集d3dx12.h 延伸模組,其為所有管線子物件提供一組協助程式結構 (例如,上述結構與 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER 非常相似)。此標頭可在 GitHub 上的 DirectX-Headers 存放庫下找到。
-runtime-validation
執行階段會驗證 PSO 描述是計算、網格或圖形管線,所有子物件都是可辨識的類型,而且沒有重複的子物件。為了辨識重複的子物件,某些子物件會被視為其他子物件的「衍生」版本。例如,如果執行階段發現 D3D12_DEPTH_STENCIL_DESC 子物件,之後又發現 D3D12_DEPTH_STENCIL_DESC1,它會將這些視為重複的子物件而失敗。
需求
標頭: d3d12_xs.h 或 d3d12_x.h程式庫: d3d12_xs.lib 或 d3d12_x.lib
支援的平台: XBOX Series 主機與 XBOX One 系列
