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)
构造函数,该构造函数使用与传递给 它的D3D12_STATE_OBJECT_TYPE 的值对应的子作业类型初始化 CD3DX12_STATE_OBJECT_DESC 的新实例。
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.
...
要求
要求 | Value |
---|---|
标头 | D3dx12.h |