Articulo de referencia

Modo inmediato (gráficos por computadora)

El modo inmediato es un patrón de diseño de API en bibliotecas de gráficos por computadora, en el que las llamadas del cliente provocan directamente la representación de objetos...

El modo inmediato es un patrón de diseño de API en bibliotecas de gráficos por computadora, en el que

sin el uso de una indirección extensa – 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 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 gráfica de 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 gráfica . Esto implica que, en una aplicación en modo inmediato, las listas de objetos gráficos que se van a renderizar las guarda el cliente y no la API de la biblioteca gráfica. 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 control y flexibilidad al programa de la aplicación, pero, por otro lado, también genera una carga de trabajo continua en la CPU .

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

Ejemplos de sistemas de renderizado en modo inmediato incluyen Direct2D , [ 1 ] OpenGL [ 3 ] y Quartz . [ 4 ] Hay algunas GUI en modo inmediato que son particularmente adecuadas cuando se usan junto con sistemas de renderizado en modo inmediato.

Renderizado de primitivas en modo inmediato

Los datos de atributos de vértice primitivos pueden insertarse fotograma a fotograma en un búfer de comandos mediante una API de renderizado . Esto implica un ancho de banda y un tiempo de procesador considerables (especialmente si la unidad de procesamiento gráfico está en un bus independiente), pero puede resultar ventajoso para los datos generados dinámicamente por la CPU . Es menos común desde la aparición de sombreadores cada vez más versátiles , con los que una unidad de procesamiento gráfico puede generar efectos cada vez más complejos sin necesidad de intervención de la CPU.

Renderizado en modo inmediato con búferes de vértices.

Aunque los comandos de dibujo deben emitirse de nuevo para cada nuevo fotograma , 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 la indirección ) (por ejemplo, texturas y búferes de vértices ) en los comandos de dibujo.

Interfaz gráfica de usuario en modo inmediato

Las interfaces gráficas de usuario tradicionalmente utilizan un diseño de API de estilo modo retenido , [ 2 ] [ 5 ] pero las GUI de modo inmediato utilizan un diseño de API de estilo modo inmediato, en el que el código del 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 debe 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 ] Las implementaciones destacadas incluyen Dear ImGui de Omar Cornut [ 7 ] en C++, Clay de Nic Barker [ 8 ] [ 9 ] en C y Nuklear de Micha Mettke [ 10 ] en C.

Véase también

Referencias

  1. 1 2 Quinn Radich (30 de mayo de 2018). "Modo retenido frente a modo inmediato" . Aplicaciones Win32 . Microsoft . Consultado el 21 de diciembre de 2019 .
  2. 1 2 Feldmeier, Alex (12 de octubre de 2013). "Programación de GUI" . Informe técnico de Ciencias de la Computación e Ingeniería de Software de UWP . Recuperado 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.
  3. "OpenGL" . Consultado el 4 de mayo de 2020 .
  4. Weiher, Marcel (24 de febrero de 2017). Optimización 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. Las principales API gráficas Quartz y OpenGL son ambas API de modo inmediato.
  5. 1 2 3 Barrett, Sean (septiembre de 2005). "Interfaces gráficas de usuario en modo inmediato" (PDF) . Game Developer . Vol. 12. págs. 34–36 . Archivado del original (PDF) el 25 de agosto de 2021. Recuperado el 14 de febrero de 2021 .  
  6. 1 2 "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 .
  7. https://github.com/ocornut/imgui/wiki
  8. https://nicbarker.com/clay
  9. "Presentamos Clay: diseño de interfaz de usuario de alto rendimiento en C" . Consultado el 20 de diciembre de 2024 .
  10. «Nuklear: Nuklear» . modo-inmediato-ui.github.io . Consultado el 5 de julio de 2025 .