WikiDer > Набор инструментов OpenGL Utility

OpenGL Utility Toolkit
Набор инструментов OpenGL Utility
Разработчики)Марк Килгард
Операционная системаКроссплатформенность
ПлатформаКроссплатформенность
ТипAPI
Интернет сайтwww.opengl.org/Ресурсы/ библиотеки/ перенасыщение/ Отредактируйте это в Викиданных

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

GLUT был написан Марк Дж. Килгард, автор Программирование OpenGL для системы X Window и Учебник по компьютерной графике: полное руководство по программируемой графике в реальном времени, пока он работал на Силиконовая Графика Inc.

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

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

Реализации

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

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

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

/ * Авторские права (c) Марк Дж. Килгард, 1994, 1995, 1996, 1998, 2000, 2006, 2010. * // * Эта программа распространяется бесплатно без лицензионных сборов и предоставляется без явных или подразумеваемых гарантий. Эта программа не является достоянием общественности. * /

Ограничения

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

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

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

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

Смотрите также

Рекомендации

внешняя ссылка