Efectos (Direct3D 9)

Un efecto de Microsoft DirectX permite la integración de sombreadores de vértices y píxeles con estado de canalización para representar objetos. Los efectos son el siguiente paso lógico en la combinación de sombreadores para generar condiciones de representación únicas.

Los efectos también proporcionan una manera cómoda de escribir sombreadores para diferentes versiones de hardware. Dado que diferentes tarjetas de vídeo admiten diferentes funcionalidades, una aplicación puede escribir varias técnicas que se ejecutarán en una variedad de dispositivos. De este modo, si la aplicación se ejecuta en el hardware más reciente y más grande, la aplicación puede ejecutar la técnica de efecto más sofisticada. Por otro lado, las técnicas de efecto menos sofisticadas se pueden elegir automáticamente para ejecutarse en hardware menos costoso o menos capaz.

Un efecto puede reemplazar el procesamiento de vértices y parte del procesamiento de píxeles realizado por la canalización de gráficos. Un ejemplo de un efecto que usa un sombreador de vértices y un sombreador de píxeles está en el ejemplo BasicHLSL. Puede obtener este ejemplo y obtener información sobre él desde el SDK de DirectX. Para obtener información sobre el SDK de DirectX, consulta ¿Dónde está el SDK de DirectX?.

Para obtener más información sobre los efectos, consulte estos temas:

Efectos y la canalización 3D

En el diagrama siguiente se muestra la canalización.

diagrama de la canalización 3d

La canalización transforma los datos de entrada en píxeles de salida que rellenan el búfer de fotogramas. Los datos de entrada proceden de objetos que están formados por vértices en el espacio de objetos o superficies de orden superior creadas a partir de N-parches, revisiones de rectángulo y revisiones de triángulos. Una vez que los datos de entrada se han teselado, la canalización realiza el procesamiento de vértices, el procesamiento primitivo y el procesamiento de píxeles antes de generar los colores de píxeles finales.

El procesamiento de vértices y píxeles se puede realizar mediante la canalización de funciones fijas o se puede implementar con sombreadores programables. La teselación de datos de entrada, el procesamiento primitivo y las salidas de datos se controlan mediante el estado de la canalización. Todo esto se puede integrar en un efecto. Un efecto establece el estado que controla cómo funciona la canalización. Los efectos administran sombreadores programables, así como el estado fijo de la función.

Los efectos pueden guardar y restaurar el estado, dejando el dispositivo en el mismo estado que antes de que se ejecutara el efecto. Los tipos de estado que un efecto puede administrar incluyen:

  • Estado del sombreador. Esto incluye la creación y eliminación de sombreadores, la configuración de constantes del sombreador, el establecimiento del estado del sombreador y la representación con sombreadores.
  • Estado de textura y muestreador. Esto incluye especificar archivos de textura, inicializar fases de textura, crear objetos sampler y establecer el estado del sampler.
  • Otro estado de canalización. Esto incluye estados para establecer transformaciones, iluminación, materiales y opciones de representación. Pueden ser variables globales o locales. Las variables se pueden establecer mediante el propio efecto o la aplicación.

Los efectos contienen varias opciones de representación denominadas técnicas. Cada técnica encapsula variables globales, estado de canalización, textura y estado del sombreador. Un solo estilo se implementa en un pase de representación. Uno o varios pases se pueden encapsular en una técnica. Todas las pasadas y técnicas se pueden validar para ver si el código de efecto se ejecutará en el dispositivo de hardware.

Efectos Guardar y restaurar estado

Los efectos administran el estado. El estado de la palabra se usa muy ampliamente aquí, ya que incluye todo tipo de información que la canalización necesita para especificar las condiciones de representación. Esto incluye casi todas las áreas funcionales de la canalización.

Las opciones de representación se controlan mediante técnicas y pases. Una aplicación representa un efecto estableciendo una técnica activa y representando uno o varios pases. Toda la representación en un efecto se realiza dentro de un par coincidente de llamadas Begin y End . Cuando se llama a Begin , se crea un bloque de estado y se guarda el estado del dispositivo (a menos que especifique lo contrario). Después de que una técnica represente los pasos que la aplicación especifica para representar, se llama a End para finalizar la técnica activa. El sistema de efectos responde restaurando automáticamente el estado de canalización que se capturó en el bloque de estado (a menos que decida deshabilitar esta funcionalidad de guardado y restauración).

Al programar secuencias de representación de varios pasos, cada una de las cuales requiere su propia configuración de estado, los efectos pueden reducir el mantenimiento necesario para realizar el seguimiento de los cambios de estado. Para ver más información sobre los estados que se pueden guardar y restaurar por efectos, vea Estados de efecto (Direct3D 9).

Efectos pueden compartir parámetros

Los parámetros de efecto son todas las variables no estáticas declaradas en un efecto. Esto puede incluir variables globales y anotaciones. Los parámetros de efecto se pueden compartir entre distintos efectos declarando parámetros con la palabra clave shared y, a continuación, creando el efecto con un grupo de efectos.

Los efectos clonados usan el mismo grupo de efectos que el efecto del que se clonan. La clonación de un efecto realiza una copia exacta de un efecto, incluidas variables globales, técnicas, pasos y anotaciones.

Guía de programación para Direct3D 9