Cómo: Indexar varios flujos de salida
En el modelo de sombreador 5, un sombreador de geometría puede admitir hasta 4 secuencias independientes. Esto significa que un único sombreador puede generar entre uno y cuatro flujos de salida, dependiendo del número de secuencias declaradas.
Para indexar varios flujos de salida
Defina un flujo de datos mediante un tipo de plantilla de secuencia.
inout PointStream<OutVertex1> myStream1,
Defina un segundo flujo de datos mediante un tipo de plantilla de secuencia.
inout PointStream<OutVertex2> myStream2 )
Genera datos en secuencias (o ambas) mediante las funciones intrínsecas del objeto de salida de flujo (como Append o RestartStrip).
void MyGS( InVertex verts[2], inout PointStream<OutVertex1> myStream1, inout PointStream<OutVertex2> myStream2 ) { OutVertex1 myVert1 = TransformVertex1( verts[0] ); OutVertex2 myVert2 = TransformVertex2( verts[1] ); myStream1.Append( myVert1 ); myStream2.Append( myVert2 ); }
Al usar un único flujo de salida, puede emitir franjas de triángulos, franjas de líneas o listas de puntos. Al almacenar franjas de triángulos y líneas en el búfer de salida de flujo, se expanden a listas de triángulos y líneas, respectivamente. También puede rasterizar una secuencia y no enviarla a un búfer de memoria.
Al usar varios flujos de salida, todos los flujos deben contener puntos y se puede enviar hasta un flujo de salida al rasterizador. Normalmente, una aplicación no rasterizará ninguna secuencia.
Después de transmitir datos a un búfer, puede usar esos datos para representar cualquier tipo primitivo, no solo el tipo primitivo que usó para rellenar el búfer.
La salida total del sombreador de geometría se limita a 1024 escalares. Cuando existen varias secuencias, el número de escalares se calcula a partir del tipo de flujo más grande multiplicado por el número máximo de vértices.
Diferencias entre el modelo de sombreador 4 y el modelo de sombreador 5:
Modelo de sombreador 4:
- El número máximo de escalares para la salida del flujo es 64.
- La máscara de registro por componente debe coincidir entre el intervalo de índices.
- El número máximo de escalares para la salida del flujo es 128.
- La máscara de registro por componente no necesita coincidir entre el intervalo de índices.
- La indexación dinámica de salidas debe ser legal en todos los flujos.
- No es necesario que los modos de interpolación coincidan con las secuencias.