Este artículo necesita citas adicionales para su verificación . ( diciembre de 2019 ) |
El modo inmediato es un patrón de diseño de API en bibliotecas de gráficos de computadora, en el que
sin el uso de indirección extensiva –por lo tanto inmediata– a los recursos retenidos. [1] No excluye el uso de doble buffering .
El modo retenido es un enfoque alternativo. Históricamente, el modo retenido ha sido el estilo dominante en las bibliotecas de GUI ; [2] sin embargo, ambos pueden coexistir en la misma biblioteca y no son necesariamente excluyentes en la práctica.
En el modo inmediato, la escena ( modelo de objeto completo de las primitivas de renderizado ) se conserva 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, las listas de objetos gráficos que se van a renderizar las conserva el cliente y no las guarda la API de la biblioteca de gráficos. La aplicación debe volver a emitir todos los comandos de dibujo necesarios para describir la escena completa cada vez que se requiere 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 .
Algunos ejemplos de sistemas de renderizado en modo inmediato son Direct2D , [1] OpenGL [3] y Quartz . [4] Hay algunas GUI de modo inmediato que son particularmente adecuadas cuando se utilizan junto con sistemas de renderizado en modo inmediato.
Los datos de atributos de vértices primitivos pueden insertarse cuadro por cuadro en un búfer de comandos mediante una API de renderizado . 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.
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 consumen más memoria haciendo referencia a esos datos inmutables (a través de indirección ) (por ejemplo, texturas y buffers de vértices ) en los comandos de dibujo.
Las interfaces gráficas de usuario tradicionalmente utilizan un diseño de API de estilo de modo retenido , [2] [5] pero las GUI de modo inmediato en cambio utilizan un diseño de API de estilo de modo inmediato, en el que el código de usuario especifica directamente los elementos de la GUI que se dibujarán en el bucle de entrada del usuario. Por ejemplo, en lugar de tener una función CreateButton() que un usuario llamaría una vez para instanciar un botón, una API de GUI de modo inmediato puede tener una función DoButton() que debería llamarse siempre que el botón deba estar en la pantalla. [6] [5] La técnica fue desarrollada por Casey Muratori en 2002. [6] [5]
El modo retenido ha sido el estándar durante años. Casi todas las GUI están en modo retenido.[ enlace muerto permanente ]
Las API de gráficos principales Quartz y OpenGL son API de modo inmediato.