CD3DX12_STATE_OBJECT_DESC 類別
D3DX12 狀態物件建立協助程式的中央類別,這是用來從任意子物件集合建立狀態物件的協助程式類別。
語法
class CD3DX12_STATE_OBJECT_DESC
{
CD3DX12_STATE_OBJECT_DESC() noexcept;
CD3DX12_STATE_OBJECT_DESC(D3D12_STATE_OBJECT_TYPE) noexcept;
void SetStateObjectType(D3D12_STATE_OBJECT_TYPE) noexcept;
operator const D3D12_STATE_OBJECT_DESC& ();
operator const D3D12_STATE_OBJECT_DESC* ();
template<typename T> T* CreateSubobject();
};
成員
CD3DX12_STATE_OBJECT_DESC
預設建構函式。 建立CD3DX12_STATE_OBJECT_DESC的新預設初始化實例。
CD3DX12_STATE_OBJECT_DESC(D3D12_STATE_OBJECT_TYPE)
建構函式,其會建立CD3DX12_STATE_OBJECT_DESC的新實例,這個實例會以對應至傳遞給它的D3D12_STATE_OBJECT_TYPE值之子作業類型初始化。
SetStateObjectType(D3D12_STATE_OBJECT_TYPE)
方法,會將子作業類型設定為傳遞給它的 D3D12_STATE_OBJECT_TYPE 值。
operator const D3D12_STATE_OBJECT_DESC&
轉換運算子,傳回描述狀態物件之常數 D3D12_STATE_OBJECT_DESC 物件的參考。
operator const D3D12_STATE_OBJECT_DESC*
轉換運算子,傳回描述狀態物件之常 數D3D12_STATE_OBJECT_DESC 物件的指標。
CreateSubobject
函式範本,建立此類別擁有其存留期的子專案協助程式。
樣板參數 T 會指定子作業協助程式類型,例如 ,CD3DX12_HIT_GROUP_SUBOBJECT。
備註
若要使用 D3DX12 狀態物件建立協助程式,請先具現化 CD3DX12_STATE_OBJECT_DESC 物件,並呼叫其 CreateSubobject 函式來建立子物件。 子物件協助程式各有該子物件特定的方法來設定其內容。
CD3DX12_STATE_OBJECT_DESC Collection1(D3D12_STATE_OBJECT_TYPE_COLLECTION);
auto Lib0 = Collection1.CreateSubobject<CD3DX12_DXIL_LIBRARY_SUBOBJECT>();
Lib0->SetDXILLibrary(&pMyAppDxilLibs[0]);
Lib0->DefineExport(L"rayGenShader0");
// In practice, these export listings might be data/engine-driven.
...
或者,您可以明確地具現化子物件協助程式,例如透過區域變數,改為傳遞狀態物件 desc (,這應該指向它) 協助程式建構函式 (或呼叫 mySubobjectHelper.AddToStateObject(Collection1)
) 。
在此替代案例中,您必須讓子物件保持運作,只要其相關聯的狀態物件保持運作,否則其指標參考將會過時。
CD3DX12_STATE_OBJECT_DESC RaytracingState2(D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE);
CD3DX12_DXIL_LIBRARY_SUBOBJECT LibA(RaytracingState2);
LibA.SetDXILLibrary(&pMyAppDxilLibs[4]);
// Not manually specifying exports; meaning that all exports in the libraries are exported.
...
規格需求
需求 | 值 |
---|---|
標頭 | D3dx12.h |