Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El estado del dispositivo se agrupa en objetos de estado que reducen considerablemente el costo de los cambios de estado. Hay varios objetos de estado y cada uno está diseñado para inicializar un conjunto de estados para una fase de canalización determinada. Los objetos de estado varían según la versión de Direct3D.
Estado de diseño de entrada
Este grupo de estados determina cómo la fase ensamblador de entrada (IA) lee los datos de los búferes de entrada y los ensambla para que lo use el sombreador de vértices. Esto incluye el estado, como el número de elementos del búfer de entrada y la firma de los datos de entrada. La fase ensamblador de entrada (IA) transmite primitivos de la memoria a la canalización.
Estado del rasterizador
Este grupo de estado inicializa la fase de rasterizador (RS). Este objeto incluye el estado, como los modos de relleno o selección, habilitando un rectángulo de tijera para el recorte y estableciendo parámetros multisample. Esta fase rasteriza primitivos en píxeles, realizando operaciones como recorte y asignación de primitivos a la ventanilla.
Estado de galería de símbolos de profundidad
Este grupo de estado inicializa la parte de galería de símbolos de profundidad de la fase de fusión de salida (OM). Más concretamente, este objeto inicializa las pruebas de profundidad y galería de símbolos.
Estado de mezcla
Este grupo de estado inicializa la parte de fusión de la fase de fusión de salida (OM).
Estado del sampler
Este grupo de estado inicializa un objeto sampler. Las fases del sombreador usan un objeto sampler para filtrar las texturas en la memoria.
En Direct3D, el objeto sampler no está enlazado a una textura específica, solo describe cómo realizar el filtrado según cualquier recurso adjunto.
Consideraciones sobre el rendimiento
El diseño de la API para usar objetos de estado crea varias ventajas de rendimiento. Esto incluye validar el estado en el momento de la creación de objetos, habilitar el almacenamiento en caché de objetos de estado en hardware y reducir considerablemente la cantidad de estado que se pasa durante una llamada API de configuración de estado (pasando un identificador al objeto de estado en lugar del estado).
Para lograr estas mejoras de rendimiento, debe crear los objetos de estado cuando se inicie la aplicación, antes del bucle de representación. Los objetos de estado son inmutables, es decir, una vez creados, no se pueden cambiar. En su lugar, debe destruirlos y volver a crearlos.
Puede crear varios objetos sampler con varias combinaciones de estado de ejemplo. A continuación, se realiza el cambio del estado del sampler llamando a la API "Set" adecuada que pasa un identificador al objeto (en lugar del estado del muestreador). Esto reduce significativamente la cantidad de sobrecarga durante cada fotograma de representación para cambiar el estado, ya que el número de llamadas y la cantidad de datos se reducen considerablemente.
Como alternativa, puede optar por usar el sistema de efectos que administrará automáticamente la creación y destrucción eficaces de objetos de estado para la aplicación.
Temas relacionados