D3D12_PIPELINE_STATE_STREAM_DESC 구조체(d3d12.h)

파이프라인 상태 스트림에 대해 설명합니다.

구문

typedef struct D3D12_PIPELINE_STATE_STREAM_DESC {
  SIZE_T SizeInBytes;
  void   *pPipelineStateSubobjectStream;
} D3D12_PIPELINE_STATE_STREAM_DESC;

멤버

SizeInBytes

SAL: In

pPipelineStateSubobjectStream 멤버가 가리키는 불투명 데이터 구조의 크기를 바이트 단위로 지정합니다.

pPipelineStateSubobjectStream

SAL: In_reads(Inexpressible("Dependentonsizeofsubobjects"))

임의의 파이프라인 상태 하위 개체를 바이트스트림으로 설명하는 데이터 구조의 주소를 지정합니다.

설명

ID3D12Device2::CreatePipelineState 메서드와 함께 이 구조를 사용하여 파이프라인 상태 개체를 만듭니다.

제공된 스트림의 형식은 교대로 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE 집합과 해당 하위 개체 형식(예: D3D12_RASTERIZER_DESC 쌍 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER)으로 구성되어야 합니다. 정렬 측면에서 D3D12 런타임은 하위 개체가 연속 필드 집합이 아닌 열거형 구조체의 개별 구조체 쌍이어야 합니다. 또한 시스템의 자연스러운 단어 맞춤에 맞춰질 것으로 예상합니다. 이 작업은 를 사용 alignas(void*)하거나 열거형 + 하위 개체 및 의 를 만들 union 수 있습니다 void*.

중요

특정 하위 개체가 잘못 정렬되므로 D3D12_PIPELINE_STATE_SUBOBJECT_TYPEvoid*와 결합하는 것만으로는 충분하지 않습니다. 예를 들어 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY 뒤에 D3D12_PRIMITIVE_TOPOLOGY_TYPE 열거형이 잇습니다. 하위 개체 형식이 void*와 결합된 경우 이러한 2개 멤버 사이에 추가 안쪽 여백이 있어 스트림이 손상됩니다. 이 때문에 를 사용할 수 없는 경우 alignas 전체 하위 개체 구조체를 void*와 통합해야 합니다.

D3D12_RASTERIZER_DESC 사용하기에 적합한 하위 개체의 예는 다음과 같습니다.

struct alignas(void*) StreamingRasterizerDesc
{
private:
  D3D12_PIPELINE_STATE_SUBOBJECT_TYPE Type = D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER;
public:
  D3D12_RASTERIZER_DESC Desc;
}

런타임은 VS(꼭짓점 셰이더), CS(컴퓨팅 셰이더) 및 MS(메시 셰이더)에서 하위 개체 형식이 발견되는 파이프라인 스트림 유형(COMPUTE, GRAPHICSMESH인 유효한 형식)을 결정합니다. 런타임에서 이러한 셰이더를 찾지 못하면 파이프라인 만들기에 실패합니다. null이 아닌 이러한 셰이더 중 여러 셰이더를 찾으면 실패합니다. 즉, ID3D12Device2::CreatePipelineState에 대한 지정된 호출에 대해 셰이더 바이트 코드에 대한 null이 아닌 포인터만 있는 경우 스트림 개체에 CSVS를 둘 다 사용하는 것이 합법적입니다. 파이프라인과 관련이 없는 하위 개체 형식(예: 그래픽 스트림의 컴퓨팅 셰이더 하위 개체)은 무시됩니다. 하위 개체가 제공되지 않은 경우(위의 필수 하위 개체 제외) 런타임은 기본값을 제공합니다.

모든 파이프라인 하위 개체에 대해 도우미 구조체 집합을 제공하는 C++용 확장을 사용하는 d3dx12.h 것이 좋습니다(예: 위의 구조체는 과 매우 유사 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER). 이 헤더는 github의 DirectX-Headers 리포지토리에서 찾을 수 있습니다.

요구 사항

요구 사항
헤더 d3d12.h

추가 정보

핵심 구조체