Jump to content

Общий графический интерфейс

Общий графический интерфейс
Разработчик(и) разработчики GGI
Стабильная версия
2.2.2 / 27 января 2007 г .; 17 лет назад ( 27 января 2007 )
Тип Интерфейс прикладного программирования
Лицензия МОЯ лицензия
Веб-сайт www .ibiblio .org /ggicore /индекс .html

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.

См. также

[ редактировать ]
  1. ^ Локи Программное обеспечение, Inc; Джон Р. Холл (2001). Программирование игр для Linux . Нет крахмального пресса. п. 56. ИСБН  978-1-886411-49-4 .
  2. ^ Ларабель, Майкл (3 июля 2011 г.). «Графический интерфейс ядра (KGI) фактически мертв — Phoronix» . www.phoronix.com . Проверено 8 июня 2019 г.
  3. ^ Бек, Андреас (1 ноября 1996 г.). «Проект Linux-GGI» . Linux-журнал . Проверено 20 декабря 2023 г.
  4. ^ marc.info
  5. ^ linux-kongress.org
  6. ^ «Программное обеспечение с использованием GGI» . ибиблио . Проверено 20 декабря 2023 г.
  7. ^ Бек, Андреас (1 сентября 1998 г.). «LibGGI: еще один графический API» . Linux-журнал . Проверено 20 декабря 2023 г.
  8. ^ Амштуц, Питер (9 августа 2002 г.). «LDE — Редактор Linux Doom» . Интерреальность . Проверено 23 января 2024 г.
  9. ^ Дюре-Лутц, Александр (ноябрь 2000 г.). «Анонсируем героев 0.7» . Простой слой DirectMedia .
  10. ^ Пейн, Деннис (19 сентября 2021 г.). «Инерционный взрыв» . Идентичное программное обеспечение . Проверено 21 января 2024 г.
  11. ^ Уилсон, Хэмиш (12 марта 2024 г.). «Создание игрового компьютера с Linux в стиле ретро. Часть 40: Проект «Киборг»» . Игры в Linux . Проверено 13 марта 2024 г.
  12. ^ «Анонс программного обеспечения» . Еженедельные новости Linux . 6 января 2000 г. Проверено 21 января 2024 г.
  13. ^ «Часто задаваемые вопросы: Использование SDL» . wiki.libsdl.org .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 411d291b96da182f442a6db0bafc9feb__1715381760
URL1:https://arc.ask3.ru/arc/aa/41/eb/411d291b96da182f442a6db0bafc9feb.html
Заголовок, (Title) документа по адресу, URL1:
General Graphics Interface - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)