La Interfaz Gráfica General ( GGI ) fue un proyecto que buscaba desarrollar un sistema de gráficos por computadora confiable, estable y rápido que funcionara en cualquier lugar. [ 1 ] La intención era permitir que cualquier programa que utilizara GGI se ejecutara en cualquier plataforma informática compatible, requiriendo como máximo una recompilación . GGI es software libre y de código abierto , sujeto a los requisitos de la Licencia MIT .
El proyecto GGI, y sus proyectos relacionados como KGI, generalmente se consideran muertos. [ 2 ]
Objetivos
El proyecto se inició originalmente para hacer más fiable el cambio entre consolas virtuales , svgalib y los subsistemas del servidor de visualización X en Linux . Los objetivos eran:
- Portabilidad mediante una API flexible y extensible para las aplicaciones. Esto evita la sobrecarga de las aplicaciones al obtener solo lo que utilizan. [ 3 ]
- Portabilidad entre plataformas y en sistemas backend.
- Seguridad en el sentido de requerir la menor cantidad de privilegios posible.
El marco GGI se implementa mediante un conjunto de bibliotecas portátiles de espacio de usuario , con una variedad de backends o destinos diferentes (por ejemplo, framebuffer de Linux , X11 , Quartz , DirectX ), de los cuales los dos más fundamentales son LibGII (para el manejo de entrada) y LibGGI (para la salida gráfica). Todos los demás paquetes añaden funcionalidades a estas bibliotecas principales y, por lo tanto, dependen de una o ambas.
Algunos objetivos se comunican con otros. Estos se denominan pseudoobjetivos. Los pseudoobjetivos se pueden combinar y funcionan como una tubería.
Un ejemplo: display-palemu, por ejemplo, emula el modo paleta en modos de color verdadero. Esto permite a los usuarios ejecutar aplicaciones en modo paleta incluso en máquinas donde, de otro modo, no estaría disponible. display-tile divide una gran pantalla virtual en muchas partes más pequeñas. Puedes distribuirlas en varios monitores o incluso enviarlas a través de una red.
Historia
Andreas Beck y Steffen Seeger fundaron The GGI Project en 1994 después de algunos precursores experimentales que se denominaron "scrdrv". [ 4 ]
El desarrollo de scrdrv surgió a raíz de los problemas derivados de la coexistencia de entornos gráficos (principalmente X y SVGAlib ) en el sistema operativo Linux, que no siempre se integraban bien y que frecuentemente provocaban bloqueos que requerían un reinicio. El diseño inicial de scrdrv estuvo fuertemente influenciado por el subsistema gráfico del extensor DJ DOS y algunos conceptos del proyecto SANE . El problema fundamental que resolvió scrdrv fue proporcionar un controlador en modo kernel con suficiente conocimiento del hardware de vídeo para configurar los modos, permitiendo así recuperar un estado normal incluso desde una aplicación gráfica dañada o bloqueada.
La primera versión oficial apareció en 1995. Alrededor de 1996, se lanzó GGI 1.0 bajo la licencia LGPL. GGI consistía únicamente en la biblioteca principal llamada libggi . Incluía el manejo de entrada, un conjunto de primitivas gráficas 2D y algunos controladores de espacio de usuario para tarjetas gráficas, junto con un parche del kernel de Linux con la interfaz de espacio de usuario para los controladores. El parche se conocía como KGI, la Interfaz Gráfica del Kernel.
En 1997, GGI se rediseñó por completo. Numerosas ideas nuevas y una decisión de Linux transformaron GGI en lo que se convirtió en GGI 2.0, lanzado en agosto de 2001 bajo la licencia MIT.
En LinuxExpo 98 se impartieron varias charlas sobre GGI, KGI y EvStack.
Para GGI 2.0, KGI se separó y se convirtió en un proyecto independiente llamado The KGI Project . GGI 2.0 consistía en un conjunto de bibliotecas. Durante la fase beta de la versión 2.0 a finales de 1998, la licencia de las bibliotecas se cambió de LGPL a una licencia de estilo MIT. También se trabajó mucho en el sistema de compilación para admitir más sistemas operativos. Funcionaba en FreeBSD, y también incluía código para OpenBSD, NetBSD e incluso Microsoft Windows , además de cierta compatibilidad con otras plataformas de hardware.
El manejo de entrada se trasladó a una biblioteca llamada libgii. El código GGI genérico estaba en libgg, una subbiblioteca dentro de libgii. La biblioteca gráfica principal, libggi, tiene un conjunto ligero de primitivas gráficas que era lo suficientemente común como para escribir cualquier tipo de aplicación gráfica, mientras que la API de nivel superior se encontraba en otras bibliotecas sobre libggi. Estas se denominaron extensiones GGI. libggi admite un conjunto de objetivos, la mayoría de ellos específicos de Linux: fbdev, X, aa, vcsa, terminfo y algunos pseudo objetivos como tile, multi, palemu y trueemu. Las extensiones GGI presentaban una API de nivel superior. libggiwmh proporciona funcionalidad para objetivos solo con ventanas, en ese momento esto era solo X. libggimisc proporcionaba algunas cosas básicas como vga splitline.
GGI 2.0.2 se lanzó en diciembre de 2002. El cambio más visible para el usuario fue el rediseño completo del backend X. Otro cambio notable fue la enorme mejora en la documentación. Por último, pero no menos importante, los ciclos de lanzamiento cambiaron. A partir de esta versión, existían un árbol de desarrollo y un árbol estable. El árbol estable solo se utiliza para correcciones de errores, mientras que el árbol de desarrollo recibió el nombre, siguiendo el esquema BSD, -current.
GGI 2.1.x funciona en numerosos sistemas operativos: GNU Hurd , Linux , *BSD , System V , Mac OS X y Microsoft Windows. Se ha añadido compatibilidad con más plataformas de hardware. ¡NetBSD incluso ha creado un paquete binario para NetBSD/Vax! Se ha incorporado una nueva biblioteca GGI basada en libgii, llamada libgiigic, que permite combinar acciones del usuario con eventos en tiempo de ejecución.
GGI 2.2 se lanzó en diciembre de 2005. La detección automática de destinos se rediseñó y dejó de estar centrada en Linux. GGI reemplazó sus propios tipos de datos enteros por tipos ANSI C99 para una mayor portabilidad. Se añadió un destino para Quartz. Los usuarios de Mac OS X ya no dependen de X11, pero aún pueden usar el backend de X11. Sin embargo, el cambio más visible para el usuario fue la compatibilidad con destinos estáticos enlazados.
La última versión es GGI 2.2.2, una actualización que corrige errores y forma parte de la serie estable GGI 2.2.x. Fue lanzada en enero de 2007.
Adopción
Los ports de los juegos de disparos en primera persona Doom , Heretic , Quake y Descent fueron portados para usar GGI, [ 5 ] [ 6 ] y un editor de Doom para Linux también se basó en él. [ 7 ] También fue compatible con el juego de estilo arcade Heroes , [ 8 ] un juego de serpientes y Thrust , inspirado en el juego Thrust de Commodore 64 , [ 9 ] así como los juegos de plataformas U.RBAN The Cyborg Project [ 10 ] y Dave Gnukem , [ 11 ] inspirado en el Duke Nukem original para MS-DOS . GGI también estuvo disponible como controlador de video dentro de Simple DirectMedia Layer hasta la versión 2x. [ 12 ]
Véase también
Referencias
- ↑ Loki Software, Inc; John R. Hall (2001). Programación de juegos para Linux . No Starch Press. pág. 56. ISBN 978-1-886411-49-4.
- ↑ Larabel, Michael (3 de julio de 2011). "La interfaz gráfica del kernel (KGI) está prácticamente muerta - Phoronix" . www.phoronix.com . Consultado el 8 de junio de 2019 .
- ↑ "Portabilidad a través de una API flexible: el papel de la interfaz gráfica general (GGI) para habilitar aplicaciones gráficas portátiles y seguras" . DEV . 2025-08-20 . Consultado el 2025-08-20 .
- ↑ Beck, Andreas (1996-11-01). "Proyecto Linux-GGI" . Linux Journal . Recuperado el 2023-12-20 .
- ↑ "Software que utiliza GGI" . ibiblio . Consultado el 20 de diciembre de 2023 .
- ↑ Beck, Andreas (1998-09-01). "LibGGI: Otra API gráfica más" . Linux Journal . Recuperado el 2023-12-20 .
- ↑ Amstutz, Peter (2002-08-09). "LDE - Linux Doom Editor" . Interreality . Recuperado el 23-01-2024 .
- ↑ Duret-Lutz, Alexandre (noviembre de 2000). "Anuncio de Heroes 0.7" . Capa DirectMedia simple .
- ↑ Payne, Dennis (19 de septiembre de 2021). "Explosión por inercia" . Identical Software . Recuperado el 21 de enero de 2024 .
- ↑ Wilson, Hamish (12 de marzo de 2024). "Construyendo una computadora de juegos Linux retro Parte 40: El proyecto Cyborg" . GamingOnLinux . Recuperado el 13 de marzo de 2024 .
- ↑ "Anuncios de software" . Noticias semanales de Linux . 6 de enero de 2000. Consultado el 21 de enero de 2024 .
- ↑ "Preguntas frecuentes: Uso de SDL" . wiki.libsdl.org .
- Lista de preguntas frecuentes del proyecto GGI archivada el 9 de julio de 2006 en Wayback Machine .
- Noticias semanales de Linux - 26 de febrero de 1998, sección: Núcleo
- El proyecto GGI está descontento con Linux.
- Páginas web de Christopher Browne: El sistema X Window, 15. GGI - Interfaz gráfica general
- Peter Amstutz: Panorama general del proyecto GGI 1998
- Proyecto Linux-GGI archivado el 3 de noviembre de 2006 en Wayback Machine. Artículo de LinuxJournal de Steffen Seeger y Andreas Beck, 1996.
Enlaces externos
- Página web del proyecto GGI
- "GGI" . Código gratuito .
- Interfaces de programación de aplicaciones
- Bibliotecas de C (lenguaje de programación)
- Software multiplataforma
- Bibliotecas informáticas gratuitas
- Software de gráficos
- API de Linux
- Software para el desarrollo de videojuegos
- Software de desarrollo de videojuegos para Linux