Compartir a través de


Efectos (Direct3D 10)

Un efecto DirectX es una colección de estado de canalización, establecida por expresiones escritas en HLSL y alguna sintaxis específica del marco de efecto. Después de compilar un efecto, use las API de 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értices, geometría y sombreadores de píxeles), el estado de textura y muestreo utilizado por 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 obtiene 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 subconsulta 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 alguna geometría con un conjunto de búferes de profundidad/galería de símbolos y, a continuación, dibujar algunos 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 ambas pasadas 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 a una aplicación degradar correctamente el rendimiento en función de las funcionalidades de hardware detectadas.

Guía de programación para Direct3D 10