El modo inmediato en gráficos por computadora es un patrón importante de diseño de API en bibliotecas de gráficos, en el que
- las llamadas del cliente provocan directamente la representación de objetos gráficos en la pantalla, o en los que
- los datos para describir las primitivas de renderizado se insertan cuadro por cuadro directamente desde el cliente en una lista de comandos (en el caso de renderizado de primitivas en modo inmediato ),
sin el uso de una extensa indirecta - por lo tanto inmediata - a los recursos retenidos. [1] No excluye el uso de doble búfer .
El modo retenido es un enfoque alternativo. Históricamente, el modo retenido ha sido el estilo dominante en las bibliotecas GUI ; [2] sin embargo, ambos pueden coexistir en la misma biblioteca y no son necesariamente excluyentes en la práctica.
Descripción general
En el modo inmediato, la escena ( modelo de objeto completo de las primitivas de renderizado ) se retiene en el espacio de memoria del cliente , en lugar de la biblioteca de gráficos . Esto implica que en una aplicación de modo inmediato, el cliente guarda las listas de objetos gráficos a renderizar y la API de la biblioteca de gráficos no las guarda. La aplicación debe volver a emitir todos los comandos de dibujo necesarios para describir la escena completa cada vez que se requiera un nuevo fotograma , independientemente de los cambios reales. Este método proporciona, por un lado, un máximo de control y flexibilidad al programa de aplicación, pero por otro lado, también genera una carga de trabajo continua en la CPU .
Ejemplos de sistemas de renderizado en modo inmediato incluyen Direct2D , [1] OpenGL [3] y Quartz . [4] Hay algunas GUI de modo inmediato que son particularmente adecuadas cuando se usan junto con sistemas de renderizado de modo inmediato.
Existe otro patrón importante de diseño de API en las bibliotecas de gráficos: el modo retenido .
Representación primitiva de modo inmediato
Los datos de atributo de vértice primitivo se pueden insertar fotograma a fotograma en un búfer de comando mediante una API de representación . Esto implica un ancho de banda y un tiempo de procesador significativos (especialmente si la unidad de procesamiento de gráficos está en un bus separado), pero puede ser ventajoso para los datos generados dinámicamente por la CPU . Es menos común desde la llegada de los sombreadores cada vez más versátiles , con los que una unidad de procesamiento de gráficos puede generar efectos cada vez más complejos sin la necesidad de la intervención de la CPU.
Renderizado en modo inmediato con búferes de vértices
Aunque los comandos de dibujo deben volver a emitirse para cada nuevo cuadro , los sistemas modernos que utilizan este método generalmente pueden evitar la duplicación innecesaria de datos de visualización que requieren más memoria al referirse a esos datos que no cambian (mediante indirección ) (por ejemplo, texturas y búferes de vértices). ) en los comandos de dibujo.
Ver también
- GUI de modo inmediato
- Lista de visualización
- Modo retenido , generalmente en contraste con el modo inmediato
- Gráfico de escena
Referencias
- ↑ a b Quinn Radich (30 de mayo de 2018). "Modo retenido versus modo inmediato" . Aplicaciones Win32 . Microsoft . Consultado el 21 de diciembre de 2019 .
- ^ Feldmeier, Alex (12 de octubre de 2013). "Programación GUI" . Informe técnico de UWP Computer Science and Software Engineering . Consultado el 22 de diciembre de 2019 .
El modo retenido ha sido el estándar durante años. Casi todas las GUI están en modo retenido.
- ^ "OpenGL" . Consultado el 4 de mayo de 2020 .
- ^ Weiher, Marcel (24 de febrero de 2017). Ajuste del rendimiento de iOS y macOS: Cocoa, Cocoa Touch, Objective-C y Swift . Addison-Wesley Professional. ISBN 9780133085532. Consultado el 22 de diciembre de 2019 .
La API de gráficos principal Quartz y OpenGL son API de modo inmediato