Efectos (Direct3D 11)
Un efecto DirectX es una colección de estado de canalización, establecido por expresiones escritas en HLSL y alguna sintaxis específica del marco de efecto.
Después de compilar un efecto, use las API del marco de efecto para representar. La funcionalidad de efecto puede variar desde algo tan sencillo como un sombreador de vértices que transforma la geometría y un sombreador de píxeles que genera un color sólido, hasta una técnica de representación que requiere varios pasos, usa todas las fases de la canalización de gráficos y manipula el estado del sombreador, así como el estado de canalización no asociado a los sombreadores programables.
El primer paso es organizar el estado que desea controlar en un efecto. Esto incluye el estado del sombreador (vértice, casco, dominio, geometría, píxeles y sombreadores de proceso), textura y estado de muestreador que usan los sombreadores y otro estado de canalización no programable. Puede crear un efecto en la memoria como una cadena de texto, pero normalmente, el tamaño es lo suficientemente grande como para almacenar el estado de efecto en un archivo de efecto (un archivo de texto que termina en una extensión .fx). Para usar un efecto, debe compilarlo (para comprobar la sintaxis de HLSL, así como la sintaxis del marco de efecto), inicializar el estado del efecto a través de llamadas API y modificar el bucle de representación para llamar a las API de representación.
Un efecto encapsula todo el estado de representación requerido por un efecto determinado en una sola función de representación denominada técnica. Un paso es un subconsulto de una técnica que contiene el estado de representación. Para implementar un efecto de representación de varios pasos, implemente uno o varios pases dentro de una técnica. Por ejemplo, supongamos que quería representar una geometría con un conjunto de búferes de profundidad y galería de símbolos y, a continuación, dibujar algunas sprites encima de eso. Puede implementar la representación de geometría en el primer paso y el dibujo de sprite en el segundo paso. Para representar el efecto, basta con representar ambos pasos en el bucle de representación. Puede implementar cualquier número de técnicas en un efecto. Por supuesto, cuanto mayor sea el número de técnicas, mayor será el tiempo de compilación del efecto. Una manera de aprovechar esta funcionalidad es crear efectos con técnicas diseñadas para ejecutarse en hardware diferente. Esto permite que una aplicación cambie correctamente el rendimiento en función de las funcionalidades de hardware detectadas.
Un conjunto de técnicas se puede agrupar en un grupo (que usa la sintaxis "fxgroup"). Las técnicas se pueden agrupar de cualquier manera. Por ejemplo, se podrían crear varios grupos, uno por material; cada material podría tener una técnica para cada nivel de hardware; cada técnica tendría un conjunto de pasos que definen el material en el hardware concreto.
En esta sección
Tema | Descripción |
---|---|
Organización del estado en un efecto |
Con Direct3D 11, el estado de efecto para determinadas fases de canalización está organizado por estructuras. |
Interfaces del sistema de efectos |
El sistema de efectos define varias interfaces para administrar el estado del efecto. |
Interfaces especializadas |
ID3DX11EffectVariable tiene varios métodos para convertir la interfaz en el tipo determinado de interfaz que necesita. |
Interfaces y clases en efectos |
Hay muchas maneras de usar clases e interfaces en Efectos 11. |
Representación de un efecto |
Un efecto se puede usar para almacenar información o para representar mediante un grupo de estados. |
Clonación de un efecto |
La clonación de un efecto crea una segunda copia casi idéntica del efecto. |
Sintaxis de stream out |
Un sombreador de geometría con flujo de salida se declara con una sintaxis determinada. |
Diferencias entre los efectos 10 y los efectos 11 |
En este tema se muestran las diferencias entre Efectos 10 y Efectos 11. |