fase de Stream-Output

El propósito de la fase de salida de flujo es generar continuamente (o transmitir) datos de vértices de la fase del sombreador de geometría (o la fase del sombreador de vértices si la fase del sombreador de geometría está inactiva) a uno o varios búferes en memoria (vea Introducción con la fase de Stream-Output).

La fase de salida de flujo (SO) se encuentra en la canalización justo después de la fase del sombreador de geometría y justo antes de la fase de rasterización, como se muestra en el diagrama siguiente.

diagrama de la ubicación de la fase de salida de flujo en la canalización

Los datos transmitidos a la memoria se pueden volver a leer en la canalización en un paso de representación posterior o se pueden copiar en un recurso de almacenamiento provisional (por lo que la CPU puede leerlos). La cantidad de datos transmitidos puede variar; La API ID3D11DeviceContext::D rawAuto está diseñada para controlar los datos sin necesidad de consultar (la GPU) sobre la cantidad de datos escritos.

Cuando una franja de triángulos o líneas está enlazada a la fase del ensamblador de entrada, cada franja se convierte en una lista antes de que se transmitan. Los vértices siempre se escriben como primitivos completos (por ejemplo, 3 vértices en un momento para los triángulos); los primitivos incompletos nunca se transmiten. Los tipos primitivos con adyacencia descartan los datos de adyacencia antes de transmitir los datos.

Hay dos maneras de alimentar los datos de salida de flujo en la canalización:

  • Los datos de salida de flujo se pueden devolver a la fase del ensamblador de entrada.
  • Los sombreadores programables pueden leer los datos de salida de flujo mediante funciones de carga (como Load).

Para usar un búfer como recurso de salida de flujo, cree el búfer con la marca D3D11_BIND_STREAM_OUTPUT . La fase de salida de flujo admite hasta 4 búferes simultáneamente.

  • Si va a transmitir datos a varios búferes, cada búfer solo puede capturar un único elemento (hasta 4 componentes) de datos por vértice, con un intervalo de datos implícito igual al ancho del elemento en cada búfer (compatible con la forma en que los búferes de un solo elemento se pueden enlazar para la entrada en fases del sombreador). Además, si los búferes tienen tamaños diferentes, la escritura se detiene en cuanto cualquiera de los búferes está lleno.
  • Si va a transmitir datos a un solo búfer, el búfer puede capturar hasta 64 componentes escalares de datos por vértice (256 bytes o menos) o el intervalo de vértice puede ser de hasta 2048 bytes.

En esta sección

Tema Descripción
Introducción con la fase de Stream-Output
En esta sección se describe cómo usar un sombreador de geometría con la fase de salida de flujo.

Canalización de gráficos

Fases de canalización (Direct3D 10)