Общий графический интерфейс
Разработчик(и) | разработчики GGI |
---|---|
Стабильная версия | 2.2.2 / 27 января 2007 г |
Тип | Интерфейс прикладного программирования |
Лицензия | МОЯ лицензия |
Веб-сайт | www |
General Graphics Interface (GGI) — проект, целью которого была разработка надежной, стабильной и быстрой системы компьютерной графики , работающей повсюду. [1] Намерение состояло в том, чтобы позволить любой программе, использующей GGI, работать на любой вычислительной платформе поддерживаемой им , требуя в лучшем случае перекомпиляции . GGI — это бесплатное программное обеспечение с открытым исходным кодом , на которое распространяются требования лицензии MIT .
Проект GGI и связанные с ним проекты, такие как KGI, обычно считаются мертвыми. [2]
Цели
[ редактировать ]Изначально проект был начат, чтобы сделать переключение между виртуальными консолями , svgalib и подсистемами сервера отображения X в Linux более надежным. Цели были:
- Переносимость благодаря гибкому и расширяемому API для приложений. Это позволяет избежать раздувания приложений, поскольку они получают только то, что они используют. [ нужны разъяснения ] [ нужна ссылка ]
- Мобильность в кроссплатформенности и в бэкэндах [ нужны разъяснения ]
- Безопасность в смысле требования как можно меньшего количества привилегий.
Платформа GGI реализована набором портативных пользовательского пространства библиотек с множеством различных серверных частей или целей (например, фреймбуфер Linux , X11 , Quartz , DirectX ), из которых двумя наиболее фундаментальными являются LibGII (для обработки ввода) и LibGGI (для графического вывода). Все остальные пакеты добавляют функции к этим основным библиотекам и поэтому зависят от одной или обеих из них.
Некоторые цели разговаривают с другими целями. Это так называемые псевдоцели. Псевдоцели можно комбинировать и работать как конвейер.
Один пример:display-palemu, например, эмулирует режим палитры в режимах истинного цвета. Это позволяет пользователям запускать приложения в режиме палитры даже на компьютерах, где в противном случае режим палитры был бы недоступен. display-tile разбивает большой виртуальный дисплей на множество более мелких частей. Вы можете распространять их на несколько мониторов или даже пересылать по сети.
История
[ редактировать ]Андреас Бек и Штеффен Сигер основали The GGI Project в 1994 году после нескольких экспериментальных предшественников, получивших название «scrdrv». [3]
Разработка scrdrv была мотивирована проблемами, вызванными сосуществованием, но не очень хорошо взаимодействующими графическими средами (в основном X и SVGAlib ) под операционной системой Linux в то время, что часто приводило к зависаниям, требующим перезагрузки. На дизайн первого scrdrv сильно повлияла графическая подсистема расширителя DJ DOS и некоторые концепции проекта SANE . Основная проблема, которую решил scrdrv, заключалась в том, что он предоставил драйвер режима ядра, который знал достаточно видеооборудования для настройки режимов, что позволяло вернуться в нормальное состояние даже из испорченного или аварийного графического приложения.
Первая официальная версия появилась в 1995 году. Примерно в 1996 году GGI 1.0 была выпущена под лицензией LGPL. GGI состоял только из базовой библиотеки под названием libggi . Он включал обработку ввода, набор 2D-графических примитивов и некоторые драйверы пользовательского пространства для графических плат, а также патч ядра Linux с интерфейсом пользовательского пространства для драйверов. Патч был известен как KGI, графический интерфейс ядра.
В 1997 году GGI претерпела полную модернизацию. Множество новых идей и решений Linux превратили GGI в то, чем он стал в GGI 2.0, выпущенном в августе 2001 года под выпуском MIT.
В 1998 году в списке рассылки ядра Linux шла большая война по поводу включения KGI в ядро. Линус Торвальдс объяснил свои опасения [4] о заявлении GGI: «Я думаю, что X достаточно хорош» и выражении обеспокоенности по поводу общего направления GGI.
В это время еще одна дизайнерская идея под названием EvStack к этой войне добавилась . EvStack представлял собой практически полную переработку подсистемы ввода и вывода, которая позволяла событиям (отсюда и «Ev») проходить через «стек» модулей, которые можно настроить для управления ими. EvStack — это очень мощная концепция, позволяющая, например, иметь две клавиатуры, подключенные к одному и тому же компьютеру, одна из которых управляет текстовой консолью на одном графическом адаптере, а другая — графической консолью на другом (как было продемонстрировано на Linux-Kongreß '97). [5] ) и даже позволяет использовать разные раскладки клавиатуры на разных виртуальных консолях или подключать клавиатуры через сеть. Однако за это пришлось внести огромный патч в подсистему ввода, который казался неприемлемым. Современная система событий ввода Linux позволяет программам (например, Xorg) получать события клавиатуры не через консольную клавиатуру, что позволяет работать с несколькими пользователями .
На LinuxExpo 98 был проведен ряд докладов о GGI, KGI и EvStack.
В версии GGI 2.0 KGI была выделена и стала отдельным проектом под названием The KGI Project . GGI 2.0 состоял из набора библиотек. Во время бета-фазы 2.0 в конце 1998 года лицензия библиотек была изменена с LGPL на лицензию в стиле MIT. Большая работа также была проделана над системой сборки для поддержки большего количества операционных систем. Он работал на FreeBSD, присутствовал код для OpenBSD, NetBSD и даже Microsoft Windows , а также была некоторая поддержка большего количества аппаратных платформ.
Обработка ввода была перенесена в библиотеку под названием libgii. Общий код GGI находился в libgg, дочерней библиотеке libgii. Основная графическая библиотека libggi имеет облегченный набор графических примитивов, достаточно распространенный для написания любых графических приложений, в то время как API более высокого уровня перешел в другие библиотеки поверх libggi. Они назывались расширениями GGI. libggi поддерживает набор целей, большинство из которых были специфичны для Linux: fbdev, X, aa, vcsa, terminfo и некоторые псевдоцели, такие как tile, multi, palemu и trueemu. Расширения GGI имели API более высокого уровня. libggiwmh обеспечивает функциональность только для оконных целей, в то время это был только X. libggimisc предоставлял некоторые базовые вещи, такие как линия разделения vga.
GGI 2.0.2 был выпущен в декабре 2002 года. Наиболее заметным для пользователей изменением был переработанный с нуля бэкэнд X. Еще одним заметным изменением стало значительное улучшение документации. И последнее, но не менее важное: изменились циклы выпуска. Начиная с этого релиза было развитие и стабильное дерево. Дерево стабильных версий открыто только для исправления ошибок, дерево разработки получило имя, соответствующее схеме BSD, -current.
В ноябре 2004 года было выпущено последнее исправление из дерева стабильных версий GGI 2.0.x в пользу нового дерева стабильных версий GGI 2.1.x.
GGI 2.1.x работает во многих операционных системах: GNU Hurd , Linux , *BSD , System V , Mac OS X и Microsoft Windows. Добавлена поддержка большего количества аппаратных платформ. NetBSD даже создала двоичный пакет для NetBSD/Vax! Была добавлена новая библиотека GGI поверх libgii под названием libgiigic. Это позволяет комбинировать действия пользователя с событиями во время выполнения.
GGI 2.2 был выпущен в декабре 2005 года. Автоматическое обнаружение цели было переработано и больше не ориентировано на Linux. GGI заменила свои собственные целочисленные типы данных типами ANSI C99 для большей переносимости. Добавлена цель для Кварца. Пользователи Mac OS X больше не зависят от X11, но по-прежнему могут использовать серверную часть X11. Однако наиболее заметным для пользователей изменением стала поддержка статических связанных целей.
Последней версией является GGI 2.2.2, выпуск с исправлением ошибок в стабильной серии GGI 2.2.x. Он был выпущен в январе 2007 года.
Принятие
[ редактировать ]Исходные порты шутеров от первого лица Doom , Heretic , Quake и Descent были портированы под использование GGI, [6] [7] Linux Doom Editor . на его основе также создан [8] Он также был поддержан аркадным стилем Heroes . [9] игра - змея и Thrust , вдохновленная для Commodore 64 игрой Thrust , [10] а также платформер U.RBAN The Cyborg Project. [11] и Дэйв Гнукем , [12] вдохновлен оригинальной игрой Duke Nukem для MS-DOS . GGI также был доступен в качестве видеодрайвера на уровне Simple DirectMedia до версии 2x. [13]
Статус по состоянию на 2006 г.
[ редактировать ]Проект GGI продвигался к выпуску GGI 3.0. [ когда? ] libgii был переработан. Обработка ввода была заменена моделью событий реактора , которая является более гибкой, чем использование select() для файлового дескриптора . Это также упростило драйверы ввода в целом, особенно для тех, кто не использует файловые дескрипторы, такие как input-quartz.libgg был вынесен в отдельную библиотеку.
libggi объединила некоторые цели в одну подбиблиотеку: multi с плиткой и монотекст с palemu. libggi также получила новую цель VNC ,что позволяло запускать любое приложение в качестве VNC-сервера.
В GGI 3.0 механизм расширений был переработан с нуля, чтобы упростить взаимодействие между расширениями и основными библиотеками. Это потребовало небольшого изменения API.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Локи Программное обеспечение, Inc; Джон Р. Холл (2001). Программирование игр для Linux . Нет крахмального пресса. п. 56. ИСБН 978-1-886411-49-4 .
- ^ Ларабель, Майкл (3 июля 2011 г.). «Графический интерфейс ядра (KGI) фактически мертв — Phoronix» . www.phoronix.com . Проверено 8 июня 2019 г.
- ^ Бек, Андреас (1 ноября 1996 г.). «Проект Linux-GGI» . Linux-журнал . Проверено 20 декабря 2023 г.
- ^ marc.info
- ^ linux-kongress.org
- ^ «Программное обеспечение с использованием GGI» . ибиблио . Проверено 20 декабря 2023 г.
- ^ Бек, Андреас (1 сентября 1998 г.). «LibGGI: еще один графический API» . Linux-журнал . Проверено 20 декабря 2023 г.
- ^ Амштуц, Питер (9 августа 2002 г.). «LDE — Редактор Linux Doom» . Интерреальность . Проверено 23 января 2024 г.
- ^ Дюре-Лутц, Александр (ноябрь 2000 г.). «Анонсируем героев 0.7» . Простой слой DirectMedia .
- ^ Пейн, Деннис (19 сентября 2021 г.). «Инерционный взрыв» . Идентичное программное обеспечение . Проверено 21 января 2024 г.
- ^ Уилсон, Хэмиш (12 марта 2024 г.). «Создание игрового компьютера с Linux в стиле ретро. Часть 40: Проект «Киборг»» . Игры в Linux . Проверено 13 марта 2024 г.
- ^ «Анонс программного обеспечения» . Еженедельные новости Linux . 6 января 2000 г. Проверено 21 января 2024 г.
- ^ «Часто задаваемые вопросы: Использование SDL» . wiki.libsdl.org .
- Список часто задаваемых вопросов по проекту GGI
- Еженедельные новости Linux - 26 февраля 1998 г., раздел: Ядро
- Проект GGI недоволен Linux
- Веб-страницы Кристофера Брауна: Система X Window, 15. GGI — Общий графический интерфейс
- Питер Амштуц: Обзор проекта GGI , 1998 г.
- Статья Linux-GGI Project в LinuxJournal Штеффена Сигера и Андреаса Бека, 1996 г.
Внешние ссылки
[ редактировать ]- Интерфейсы прикладного программирования
- Библиотеки C (язык программирования)
- Кроссплатформенное программное обеспечение
- Бесплатные компьютерные библиотеки
- Графическое программное обеспечение
- API-интерфейсы Linux
- Программное обеспечение для разработки видеоигр
- Программное обеспечение для разработки видеоигр для Linux