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