Skip to main content
파이프라인 상태 스트림을 설명합니다.

구문

멤버

SizeInBytes
형식: SIZE_T
SAL: In pPipelineStateSubobjectStream 멤버가 가리키는 불투명 데이터 구조의 크기(바이트)를 지정합니다. pPipelineStateSubobjectStream
형식: void *
SAL: In_reads(Inexpressible(“Dependentonsizeofsubobjects”)) 임의의 파이프라인 상태 하위 객체를 바이트 스트림으로 설명하는 데이터 구조의 주소를 지정합니다.

설명

이 구조체를 ID3D12Device2::CreatePipelineState 메서드와 함께 사용하여 파이프라인 상태 객체를 만듭니다. 제공된 스트림의 형식은 **D3D12_PIPELINE_STATE_SUBOBJECT_TYPE의 교차 집합과 이에 대응하는 하위 객체 유형(예를 들어, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER는 **D3D12_RASTERIZER_DESC**와 쌍을 이룹니다)으로 구성되어야 합니다. 정렬 측면에서 D3D12 런타임은 하위 객체가 연속된 필드 집합이 아닌 열거형-구조체의 개별 구조체 쌍이 될 것을 기대합니다. 또한 시스템의 자연 워드 정렬에 정렬될 것을 기대합니다. 이는 alignas(void*)를 사용하거나 열거형 + 하위 객체와 void*union을 만들어 달성할 수 있습니다.
단순히 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE을 **void\***와 union하는 것으로는 충분하지 않습니다. 이렇게 하면 특정 하위 객체가 잘못 정렬됩니다. 예를 들어 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY 다음에는 D3D12_PRIMITIVE_TOPOLOGY_TYPE 열거형이 옵니다. 하위 객체 유형이 **void\***와 union되면 이 두 멤버 사이에 추가 패딩이 발생하여 스트림의 손상이 발생합니다. 이 때문에 alignas를 사용할 수 없는 경우 전체 하위 객체 구조체를 **void\***와 union해야 합니다.
**D3D12_RASTERIZER_DESC**와 함께 사용하기에 적합한 하위 객체의 예는 다음과 같습니다.
런타임은 VS(정점 셰이더), CS(컴퓨트 셰이더), MS(메시 셰이더) 중 어떤 하위 객체 유형이 발견되는지에 따라 파이프라인 스트림의 유형(유효한 유형은 COMPUTE, GRAPHICS, MESH)을 결정합니다. 런타임이 이러한 셰이더 중 어느 것도 찾지 못하면 파이프라인 생성에 실패합니다. null이 아닌 이러한 셰이더가 여러 개 발견되면 실패합니다. 이는 예를 들어 스트림 객체에 CSVS가 모두 있는 것이 유효하다는 의미이며, 단 **ID3D12Device2::CreatePipelineState**의 특정 호출에 대해 셰이더 바이트코드에 대해 하나만 null이 아닌 포인터를 가져야 합니다. 파이프라인과 관련 없는 하위 객체 유형(예: 그래픽 스트림의 컴퓨트 셰이더 하위 객체)은 무시됩니다. 하위 객체가 제공되지 않는 경우(위의 필수 하위 객체 제외), 런타임은 이에 대한 기본값을 제공합니다. C++용 d3dx12.h 확장을 사용하는 것을 고려해 보세요. 이는 모든 파이프라인 하위 객체에 대한 도우미 구조체 집합을 제공합니다(예를 들어, 위의 구조체는 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER와 매우 유사합니다). 이 헤더는 GitHub의 DirectX-Headers 리포지토리에서 찾을 수 있습니다.

-runtime-validation

런타임은 PSO 설명자가 컴퓨트, 메시 또는 그래픽 파이프라인인지, 모든 하위 객체가 인식되는 유형인지, 중복된 하위 객체가 없는지 확인합니다.
중복된 하위 객체를 인식하기 위해 일부 하위 객체는 다른 것들의 “파생된” 버전으로 간주됩니다. 예를 들어, 런타임이 D3D12_DEPTH_STENCIL_DESC 하위 객체를 발견한 다음 나중에 **D3D12_DEPTH_STENCIL_DESC1**을 발견하면, 이러한 것들을 중복된 하위 객체로 간주하고 실패합니다.

요구 사항

헤더: d3d12_xs.h 또는 d3d12_x.h
라이브러리: d3d12_xs.lib 또는 d3d12_x.lib
지원 플랫폼: XBOX Series 콘솔 및 XBOX One 제품군

함께 보기

핵심 구조체
마지막 수정일 2026년 8월 24일