Поделиться через


Класс 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

См. также раздел