Compartir a través de


Representación de un efecto (Direct3D 11)

Un efecto se puede usar para almacenar información o para representar mediante un grupo de estados. Cada técnica especifica un conjunto de sombreadores de vértices, sombreadores de casco, sombreadores de dominio, sombreadores de geometría, sombreadores de píxeles, sombreadores de proceso, estado del sombreador, muestreo y estado de textura, estado de vista de acceso desordenado y otro estado de canalización. Por lo tanto, una vez que haya organizado el estado en un efecto, puede encapsular el efecto de representación resultante de ese estado mediante la creación y representación del efecto.

Hay algunos pasos para preparar un efecto para la representación. La primera es la compilación, que comprueba el código HLSL como código con la sintaxis del lenguaje HLSL y las reglas del marco de efecto. Puede compilar un efecto desde la aplicación mediante llamadas API o puede compilar un efecto sin conexión mediante la utilidad del compilador de efectos fxc.exe. Una vez que el efecto se haya compilado correctamente, créelo llamando a un conjunto de API diferente (pero muy similar).

Una vez creado el efecto, hay dos pasos restantes para usarlo. En primer lugar, debe inicializar los valores de estado del efecto (los valores de las variables de efecto) mediante una serie de métodos para establecer el estado si no se inicializan en HLSL. Para algunas variables, esto se puede hacer una vez cuando se crea un efecto; otros deben actualizarse cada vez que la aplicación llama al bucle render. Una vez establecidas las variables de efecto, se indica al tiempo de ejecución que represente el efecto aplicando una técnica. Estos temas se describen con más detalle a continuación.

Naturalmente, hay consideraciones de rendimiento para el uso de efectos. Estas consideraciones son en gran medida las mismas si no usa un efecto. Aspectos como minimizar la cantidad de cambios de estado y organizar las variables por frecuencia de actualización. Estas tácticas se usan para minimizar la cantidad de datos que se deben enviar desde la CPU a la GPU y, por lo tanto, minimizar los posibles problemas de sincronización.

En esta sección

Tema Descripción
Compilar un efecto
Una vez creado un efecto, el siguiente paso consiste en compilar el código para comprobar si hay problemas de sintaxis.
Crear un efecto
Un efecto se crea cargando el código de bytes del efecto compilado en el marco de efectos. A diferencia de Los efectos 10, el efecto debe compilarse antes de crear el efecto. Los efectos cargados en la memoria se pueden crear llamando a D3DX11CreateEffectFromMemory.
Establecer estado de efecto
Algunas constantes de efecto solo deben inicializarse. Una vez inicializado, el estado del efecto se establece en el dispositivo para todo el bucle de representación. Es necesario actualizar otras variables cada vez que se llama al bucle de representación. A continuación se muestra el código básico para establecer variables de efecto, para cada uno de los tipos de variables.
Aplicar una técnica
Con las constantes, texturas y estado del sombreador declarados e inicializados, lo único que queda por hacer es establecer el estado de efecto en el dispositivo.

Efectos (Direct3D 11)