Jump to content

Инструментарий утилиты OpenGL

Инструментарий утилиты OpenGL
Разработчик(и) Марк Килгард
Репозиторий
Операционная система Кросс-платформенный
Платформа Кросс-платформенный
Тип API
Веб-сайт www .opengl .org /ресурсы /библиотеки /перенасыщение /  Edit this on Wikidata

OpenGL Utility Toolkit ( GLUT ) — это библиотека утилит для программ OpenGL на системном уровне , которые в основном выполняют ввод-вывод хоста с операционной системой . Выполняемые функции включают определение окна, управление окном и мониторинг ввода с клавиатуры и мыши . Также предусмотрены процедуры для рисования ряда геометрических примитивов (как в сплошном, так и в каркасном режиме), включая кубы , сферы и чайник «Юта» . GLUT также имеет ограниченную поддержку создания всплывающих меню.

GLUT был написан Марком Дж. Килгардом , автором книг OpenGL Programming for the X Window System и The Cg Tutorial: The Definitive Guide to Programmable Real-Time Graphics , когда он работал в Silicon Graphics Inc.

Две цели GLUT — обеспечить возможность создания достаточно переносимого кода между операционными системами (GLUT является кроссплатформенным ) и облегчить изучение OpenGL. Начало работы с программированием OpenGL при использовании GLUT часто занимает всего несколько строк кода и не требует знания API-интерфейсов управления окнами, специфичных для операционной системы .

Все функции GLUT начинаются с glut префикс (например, glutPostRedisplay помечает текущее окно как требующее перерисовки).

Реализации

[ редактировать ]

Исходная библиотека GLUT, созданная Марком Килгардом, поддерживает систему X Window ( GLX ) и была портирована на Microsoft Windows ( WGL ) Нейтом Робинсом . Кроме того, macOS поставляется с инфраструктурой GLUT, которая поддерживает собственный NSGL/ CGL .

Библиотека GLUT компании Kilgard больше не поддерживается, и ее лицензия не разрешает распространение модифицированных версий библиотеки. Это вызвало потребность в бесплатном программном обеспечении или открытым исходным кодом повторной реализации API с с нуля. Первой такой библиотекой была FreeGLUT , целью которой было достаточно точное воспроизведение, хотя и вводилось небольшое количество новых функций для преодоления ограничений GLUT. OpenGLUT, ответвление FreeGLUT, добавляет ряд новых функций к исходному API, но работа над ним прекратилась в мае 2005 года.

У Марка Килгарда есть репозиторий GitHub для GLUT. [1] Заголовочный файл Glut.h содержит следующую лицензию: [2]

/* Copyright (c) Mark J. Kilgard, 1994, 1995, 1996, 1998, 2000, 2006, 2010. */

/* This program is freely distributable without licensing fees  and is
  provided without guarantee or warrantee expressed or  implied. This
  program is -not- in the public domain. */

Ограничения

[ редактировать ]

Некоторые из оригинальных проектных решений GLUT затрудняли программистам выполнение желаемых задач. Это побудило многих создавать неканонические патчи и расширения для GLUT. [1] Некоторые бесплатные версии программного обеспечения или версии с открытым исходным кодом также включают исправления.

Некоторые из наиболее заметных ограничений исходной библиотеки GLUT включают в себя:

  • Библиотека требует от программистов вызова glutMainLoop(), функция, которая никогда не возвращает значение. Из-за этого программистам сложно интегрировать GLUT в программу или библиотеку, которая хочет иметь контроль над собственным циклом событий. Обычный патч для исправления этой проблемы — введение новой функции под названием glutCheckLoop() (macOS) или glutMainLoopEvent() (FreeGLUT/OpenGLUT), который запускает только одну итерацию цикла событий GLUT. Другой распространенный обходной путь — запуск цикла событий GLUT в отдельном потоке , хотя это может варьироваться в зависимости от операционной системы, а также может привести к проблемам с синхронизацией или другим проблемам: например, реализация GLUT в macOS требует, чтобы glutMainLoop() запускаться в основном потоке.
  • Тот факт, что glutMainLoop() Никогда не возвращается также означает, что программа GLUT не может выйти из цикла событий. FreeGLUT исправляет это, вводя новую функцию: glutLeaveMainLoop().
  • Библиотека завершает процесс при закрытии окна; для некоторых приложений это может быть нежелательно. Таким образом, многие реализации включают дополнительный обратный вызов, например glutWMCloseFunc().

Поскольку он больше не поддерживается (по сути заменен с открытым исходным кодом FreeGLUT ), вышеуказанные проблемы дизайна все еще не решены в исходном GLUT.

См. также

[ редактировать ]
  1. ^ «Перенасыщение» . Гитхаб . 21 ноября 2021 г. Архивировано из оригинала 11 июня 2018 г. Проверено 13 октября 2014 г.
  2. ^ «Перенасыщение» . Гитхаб . 21 ноября 2021 года. Архивировано из оригинала 3 августа 2022 года . Проверено 13 октября 2014 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 26596bee42aa8ab4add80da084c960be__1661553660
URL1:https://arc.ask3.ru/arc/aa/26/be/26596bee42aa8ab4add80da084c960be.html
Заголовок, (Title) документа по адресу, URL1:
OpenGL Utility Toolkit - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)