Sintaxis
Miembros
SizeInBytesTipo: SIZE_T SAL:
In
Especifica el tamaño de la estructura de datos opaca a la que apunta el miembro pPipelineStateSubobjectStream, en bytes.
pPipelineStateSubobjectStreamTipo: void * SAL:
In_reads(Inexpressible(“Dependentonsizeofsubobjects”))
Especifica la dirección de una estructura de datos que describe, como una secuencia de bytes, un subobjeto arbitrario de estado de canalización.
Comentarios
Use esta estructura con el método ID3D12Device2::CreatePipelineState para crear objetos de estado de canalización. El formato de la secuencia proporcionada debe consistir en un conjunto alternado de D3D12_PIPELINE_STATE_SUBOBJECT_TYPE y los tipos de subobjeto correspondientes para ellos (por ejemplo, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER se empareja con D3D12_RASTERIZER_DESC. En cuanto a la alineación, el entorno de ejecución de D3D12 espera que los subobjetos sean pares individuales de estructuras enum-struct, en lugar de un conjunto continuo de campos. También espera que estén alineados con la alineación de palabra natural del sistema. Esto puede lograrse mediantealignas(void*), o creando una union del enum + subobjeto y un void*.
No basta con simplemente hacer una unión del D3D12_PIPELINE_STATE_SUBOBJECT_TYPE con un void*, porque esto dará lugar a que ciertos subobjetos queden mal alineados. Por ejemplo, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY va seguido de un enum D3D12_PRIMITIVE_TOPOLOGY_TYPE. Si el tipo de subobjeto se une con un void*, habrá un relleno adicional entre estos 2 miembros, lo que dará lugar a daños en la secuencia. Por este motivo, debe hacer la unión de toda la estructura del subobjeto con un void* cuando
alignas no esté disponibled3dx12.h para C++, que proporcionan un conjunto de estructuras auxiliares para todos los subobjetos de canalización (por ejemplo, la estructura anterior es muy similar a CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER). Este encabezado se encuentra en el repositorio DirectX-Headers en github.
-runtime-validation
El entorno de ejecución validará que la descripción del PSO sea una canalización de proceso, de malla o de gráficos, que todos los subobjetos sean de tipos reconocidos y que no haya subobjetos duplicados.Algunos subobjetos se consideran una versión “derivada” de otros a efectos de reconocer subobjetos duplicados. Por ejemplo, si el entorno de ejecución detecta un subobjeto D3D12_DEPTH_STENCIL_DESC y, más adelante, un D3D12_DEPTH_STENCIL_DESC1, los considerará subobjetos duplicados y dará error.
Requisitos
Encabezado: d3d12_xs.h o d3d12_x.hBiblioteca: d3d12_xs.lib o d3d12_x.lib
Plataformas compatibles: consolas XBOX Series y familia XBOX One
