stringtranslate.com

Modo inmediato (gráficos por computadora)

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.

Descripción general

Explicación esquemática de una API de gráficos en modo inmediato

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 .

Explicación esquemática de una API de gráficos en modo retenido en contraste

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.

Representación primitiva 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.

Representación en modo inmediato con buffers 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 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.

GUI de modo inmediato

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]

Véase también

Referencias

  1. ^ ab Quinn Radich (30 de mayo de 2018). «Modo retenido frente a modo inmediato». Aplicaciones Win32 . Microsoft . Consultado el 21 de diciembre de 2019 .
  2. ^ ab Feldmeier, Alex (12 de octubre de 2013). "Programación de GUI". Informe técnico de ingeniería de software y ciencias de la computación de UWP . 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.[ enlace muerto permanente ]
  3. ^ "OpenGL" . Consultado el 4 de mayo de 2020 .
  4. ^ 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. Recuperado el 22 de diciembre de 2019. Las API de gráficos principales Quartz y OpenGL son API de modo inmediato.
  5. ^ abc Barrett, Sean (septiembre de 2005). "Immediate Mode GUIs" (PDF) . Game Developer . Vol. 12. págs. 34–36 . Consultado el 14 de febrero de 2021 .
  6. ^ ab "Interfaces gráficas de usuario en modo inmediato (2005)". Interfaces gráficas de usuario en modo inmediato (2005) . Consultado el 15 de junio de 2021 .