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

另请参阅