OpenGL

OpenGL
Логотип программы OpenGL
Скриншот программы OpenGL
Тип API
Разработчики Silicon Graphics, затем Khronos Group
Написана на Си и OpenGL Shading Language
Операционная система Кроссплатформенное программное обеспечение
Первый выпуск 1 июля 1992[1]
Последняя версия 4.6 (31 июля 2017)
Состояние заменен на Vulkan
Лицензия EULA, ACORP
Сайт opengl.org
Логотип Викисклада Медиафайлы на Викискладе

OpenGL (Open Graphics Library) — спецификация, определяющая платформонезависимый (независимый от языка программирования) программный интерфейс для написания приложений, использующих двумерную и трёхмерную компьютерную графику. Разрабатывался в США и Европе, имел тип лицензий GNU-/EU/.

OpenGL включал более 300 функций для рисования сложных трёхмерных сцен из простых примитивов. Использовался при создании компьютерных игр, САПР, виртуальной реальности, визуализации в научных исследованиях. На платформе Windows конкурировал с Direct3D.

Несмотря на значительный вклад в развитие графических технологий, OpenGL больше не развивается и был заменён на Vulkan API, который предлагает более эффективное взаимодействие с аппаратным обеспечением и современные возможности для работы с графикой. Последняя версия OpenGL выпущена в 2017 году.

Спецификация

A Graphics Pipeline Process

На базовом уровне OpenGL — это просто спецификация, то есть документ, описывающий набор функций и их точное поведение. Производители оборудования на основе этой спецификации создают реализации — библиотеки функций, соответствующих набору функций спецификации. Реализация призвана эффективно использовать возможности оборудования. Если аппаратура не позволяет реализовать какую-либо возможность, она должна быть эмулирована программно. Производители аппаратуры проходят ряд специфических тестов (conformance tests — тесты на соответствие) прежде чем реализация будет классифицирована как OpenGL-реализация. Так как разработчикам программного обеспечения достаточно научиться использовать функции, описанные в спецификации, их реализация остаётся разработчикам аппаратного обеспечения.

Эффективные реализации OpenGL существуют для Windows, Unix-платформ и Mac OS. Эти реализации обычно предоставляются изготовителями видеоадаптеров и активно используют возможности последних. Существуют также открытые реализации спецификации OpenGL, одной из которых является библиотека Mesa. Из лицензионных соображений Mesa является «неофициальной» реализацией OpenGL, хотя полностью с ней совместима на уровне кода и поддерживает как программную эмуляцию, так и аппаратное ускорение при наличии соответствующих драйверов.

Спецификация OpenGL пересматривается консорциумом ARB (Architecture Review Board), который был сформирован в 1992 году. Консорциум состоит из компаний, заинтересованных в создании широко распространённого и доступного API. Согласно официальному сайту OpenGL, членами ARB с решающим голосом на ноябрь 2004 года являются производители профессиональных графических аппаратных средств SGI, 3Dlabs, Matrox и Evans & Sutherland (военные приложения), производители потребительских графических аппаратных средств ATI и NVIDIA, производитель процессоров Intel, и изготовители компьютеров и компьютерного оборудования IBM, Apple, Dell, Hewlett-Packard и Sun Microsystems, а также один из лидеров компьютерной игровой индустрии id Software. Microsoft, одна из основоположников консорциума, покинула его в марте 2003 года. Помимо постоянных членов, каждый год приглашается большое количество других компаний, становящихся частью OpenGL ARB в течение одного года. Такое большое число компаний, вовлеченных в разнообразный круг интересов, позволило OpenGL стать прикладным интерфейсом широкого назначения с большим количеством возможностей.

Курт Экли (Kurt Akeley) и Марк Сигал (Mark Segal) являются авторами оригинальной спецификации OpenGL. Крис Фрэзиер (Chris Frazier) редактировал версию 1.1. Йон Лич (Jon Leech) редактировал версии с 1.2 по версию 2.0.

Архитектура

OpenGL ориентируется на следующие две задачи:

  • Скрыть сложности адаптации различных 3D-ускорителей, предоставляя разработчику единый API.
  • Скрыть различия в возможностях аппаратных платформ, требуя реализации недостающей функциональности с помощью программной эмуляции.

Основным принципом работы OpenGL является получение наборов векторных графических примитивов в виде точек, линий и треугольников с последующей математической обработкой полученных данных и построением растровой картинки на экране и/или в памяти. Векторные трансформации и растеризация выполняются графическим конвейером (graphics pipeline), который по сути представляет собой дискретный автомат. Абсолютное большинство команд OpenGL попадает в одну из двух групп: либо они добавляют графические примитивы на вход в конвейер, либо конфигурируют конвейер на различное исполнение трансформаций.

OpenGL является низкоуровневым процедурным API, что вынуждает программиста диктовать точную последовательность шагов, чтобы построить результирующую растровую графику (императивный подход). Это является основным отличием от дескрипторных подходов, когда вся сцена передается в виде структуры данных (чаще всего дерева), которое обрабатывается и строится на экране. С одной стороны, императивный подход требует от программиста глубокого знания законов трёхмерной графики и математических моделей, с другой стороны — даёт свободу внедрения различных инноваций.

Расширения

Стандарт OpenGL, с появлением новых технологий, позволяет отдельным производителям добавлять в библиотеку функциональность через механизм расширений. Расширения распространяются с помощью двух составляющих: заголовочный файл, в котором находятся прототипы новых функций и констант, а также драйвер устройства, поставляемого разработчиком. Каждый производитель имеет аббревиатуру, которая используется при именовании его новых функций и констант. Например, компания NVIDIA имеет аббревиатуру NV, которая используется при именовании её новых функций, как, например, glCombinerParameterfvNV(), а также констант, GL_NORMAL_MAP_NV. Может случиться так, что определённое расширение могут реализовать несколько производителей. В этом случае используется аббревиатура EXT, например, glDeleteRenderbuffersEXT. В случае же, когда расширение одобряется консорциумом ARB, оно приобретает аббревиатуру ARB и становится стандартным расширением. Обычно расширения, одобренные консорциумом, включаются в одну из следующих спецификаций OpenGL.

Список зарегистрированных расширений можно найти в официальной базе расширений[2].

Дополнительные библиотеки

Существует ряд библиотек, созданных поверх или в дополнение к OpenGL. Например, библиотека GLU, являющаяся практически стандартным дополнением OpenGL и всегда её сопровождающая, построена поверх последней, то есть использует её функции для реализации своих возможностей. Другие библиотеки, как, например, GLUT и SDL, созданы для реализации возможностей, недоступных в OpenGL. К таким возможностям относятся создание интерфейса пользователя (окна, кнопки, меню и др.), настройка контекста рисования (область рисования, использующаяся OpenGL), обработка сообщений от устройств ввода-вывода (клавиатура, мышь и др.), а также работа с файлами. Обычно каждый оконный менеджер имеет собственную библиотеку-расширение для реализации вышеописанных возможностей, например, WGL в Windows или GLX в X Window System, однако библиотеки GLUT и SDL являются кроссплатформенными, что облегчает перенос написанных приложений на другие платформы.

Библиотеки GLEW (The OpenGL Extension Wrangler Library) и GLEE (The OpenGL Easy Extension library) созданы для облегчения работы с расширениями и различными версиями OpenGL. Это особенно актуально для программистов в Windows, так как заголовочные и библиотечные файлы, поставляемые с Visual Studio, находятся на уровне версии OpenGL 1.1.

OpenGL имеет только набор геометрических примитивов (точки, линии, многоугольники), из которых создаются все трёхмерные объекты. Порой подобный уровень детализации не всегда удобен при создании сцен. Поэтому поверх OpenGL были созданы более высокоуровневые библиотеки, такие как Open Inventor и VTK. Данные библиотеки позволяют оперировать более сложными трёхмерными объектами, что облегчает и ускоряет создание трёхмерной сцены.

GLM (OpenGL Mathematics) — вспомогательная библиотека, предоставляющая программистам на C++ классы и функции для выполнения математических операций. Библиотека может использоваться при создании 3D-программ с использованием OpenGL[3]. Одной из характеристик GLM является то, что реализация основана на спецификации GLSL. Исходный код GLM использует лицензию MIT.

Независимость от языка программирования

Для подтверждения независимости от языка программирования были разработаны различные варианты привязки (binding) функций OpenGL или полностью перенесены на другие языки. Одним из примеров может служить библиотека Java 3D, которая может использовать аппаратное ускорение OpenGL. Прямая привязка функций реализована в Lightweight Java Game Library[4], которая имеет прямую привязку OpenGL для Java. Sun также выпустила версию Java OpenGL (JOGL), которая предоставляет прямую привязку к Си-функциям OpenGL, в отличие от Java 3D, которая не имеет столь низкоуровневой поддержки. Официальный сайт OpenGL имеет ссылки на привязки для языков Java, Фортран 90, Perl, Pike, Python, Ada, Visual Basic и Pascal[5]. Имеются также варианты привязки OpenGL для языков C++ и C#[6].

История

Компьютерная графика нашла широкое распространение и применение в повседневной жизни. Учёные используют компьютерную графику для анализа результатов моделирования. Инженеры и архитекторы используют трёхмерную графику для создания виртуальных моделей. Кинематографисты создают спецэффекты или полностью анимированные фильмы («Шрек», «История игрушек» и др.). В последние годы широкое распространение получили также компьютерные игры, максимально использующие трёхмерную графику для создания виртуальных миров.

Распространению компьютерной графики сопутствовали свои трудности. В 1990-х разработка программного продукта, способного работать на большом количестве графического оборудования, была сопряжена с большими временны́ми и финансовыми затратами. Было необходимо отдельно создавать модули для каждого типа графических адаптеров, что порой приводило к размножению одинакового программного кода. Это сильно тормозило развитие и распространение компьютерной графики.

Silicon Graphics (SGI) специализировалась на создании высокотехнологического графического оборудования и программных средств. Являясь в то время лидером в трёхмерной графике, SGI видела проблемы и барьеры в росте рынка. Поэтому было принято решение стандартизировать метод доступа к графической аппаратуре на уровне программного интерфейса.

Таким образом появился программный интерфейс OpenGL, который стандартизирует доступ к графической аппаратуре путём смещения ответственности за создание аппаратного драйвера на производителя графического устройства. Это позволило разработчикам программного обеспечения использовать более высокий уровень абстракции от графического оборудования, что значительно ускорило создание новых программных продуктов и снизило на них затраты.

В 1992 году компания SGI возглавила OpenGL ARB — группу компаний по разработке спецификации OpenGL. OpenGL произошёл от 3D-интерфейса SGI — IRIS GL. Одним из ограничений IRIS GL было то, что он позволял использовать только возможности, поддерживаемые оборудованием; если возможность не была реализована аппаратно, приложение не могло её использовать. OpenGL преодолевает эту проблему за счёт программной реализации возможностей, не предоставляемых аппаратно, что позволяет приложениям использовать этот интерфейс на относительно маломощных системах.

В 1995 году была выпущена библиотека Direct3D от Microsoft. Вскоре Microsoft, SGI и Hewlett-Packard начали проект под названием Fahrenheit, который предусматривал создание более универсального программного интерфейса на основе Direct3D и OpenGL. Идея казалась достаточно обещающей, призванной навести порядок в области интерактивной трёхмерной графики, однако, в результате финансовых трудностей в SGI и отсутствия должной индустриальной поддержки, проект был закрыт.

OpenGL 2.0

В сентябре 2001 года 3DLabs раскрыла своё видение OpenGL 2.0.

OpenGL версии 2.0 была представлена 3Dlabs в ответ на беспокойство относительно медленного и нечёткого направления развития OpenGL. 3Dlabs предложила ряд существенных дополнений к стандарту, наиболее значимым из которого было добавление к ядру OpenGL языка шейдеров GLSL (OpenGL Shading Language). Это позволяет программисту заменить фиксированный конвейер OpenGL небольшими программами на специальном языке для создания различных эффектов, таких, как bump mapping, normal mapping, parallax mapping, HDR и т. д.

Однако ещё до введения в стандарт OpenGL языка GLSL существовала возможность разрабатывать спецэффекты на языках ассемблера (расширения vertex_program, fragment_program) и Cg (NVidia C for Graphics). Многие предложенные возможности пока отсутствуют в версии OpenGL 2.0, хотя некоторые из них реализованы многими производителями в виде расширений.

OpenGL 2.1

Вышел в свет 2 июля 2006 года.

Добавлена поддержка GLSL версии 1.2

Новые расширения:

  • ARB_pixel_buffer_object — объект буфера может сохранять данные изображения, тем самым улучшая производительность преобразований изображения с помощью GPU;
  • EXT_texture_sRGB — позволяет указать цветовое значение пикселя из пространства цветов sRGB.

OpenGL 3.0

11 августа 2008 года Khronos Group представила новую версию спецификации OpenGL[7].

Поддерживают видеокарты: Radeon серии HD; GeForce 8, 9, GTX 100, GTX 200, GTX 300 и GTX 400 серий.

OpenGL 3.1

24 марта 2009 года Khronos Group анонсировала OpenGL 3.1. В новой версии произведена чистка компонентов, которые были объявлены устаревшими, но оставались в OpenGL 3.0 для сглаживания перехода на новую версию API (устаревшие компоненты возможно в дальнейшем использовать через расширение GL_ARB_compatibility).

OpenGL 3.2

3 августа 2009 года Khronos Group анонсировала OpenGL 3.2. Новая версия продолжает развитие стандарта OpenGL, чтобы дать разработчикам графики доступ к передовой функциональности GPU.

Поддерживают видеокарты: Radeon серии HD; GeForce 8000, 9000, GTX серий 200 и 400.

Нововведения:

  • Поддержка OpenGL Shading Language версии 1.50 (GLSL).
  • Порядок вершинных компонентов BGRA (GL_ARB_vertex_array_bgra) — теперь в шейдере можно читать 4-компонентные вершинные атрибуты в формате RGBA.
  • Команды отрисовки теперь позволяют модификацию базового индекса вершины (GL_ARB_draw_elements_base_vertex) — теперь легко можно использовать один набор вершинных буферов (для координат и прочих атрибутов) для хранения множества мешей (меньше переключений буферов — быстрее рендеринг).
  • Геометрические шейдеры (GL_ARB_geometry_shader4).

OpenGL 3.3

Представлена вместе с OpenGL 4.0 11 марта 2010 года. Позволяет максимально возможно приблизиться к функциональности OpenGL 4.0 на аппаратной базе предыдущего поколения.

OpenGL 4.0

11 марта 2010 года Khronos Group представила финальный вариант спецификации OpenGL 4.0 и языка шейдеров GLSL 4.0. OpenGL 4.0 полностью обратно совместим со старыми расширениями OpenGL, используя режим совместимости введенный в OpenGL 3.2[8].

Среди нововведений[9]:

  • Две новые ступени обработки шейдеров, что позволяет перенести обработку тесселяции с центрального процессора на GPU.
  • Прорисовка данных, сгенерированных OpenGL или такими внешними API, как OpenCL, без участия центрального процессора.
  • 64-разрядная двойная точность с плавающей запятой операций с шейдерами и ввода-вывода для увеличения точности и качества рендеринга.

OpenGL 4.1

26 июля 2010 года, Khronos Group анонсировала спецификацию OpenGL 4.1. Спецификация включает в себя обновление GLSL (GL Shading language) до версии 4.10.

Нововведения:

  • Полная совместимость с OpenGL ES 2.0 API.
  • Возможность опрашивать и загружать двоичные данные для объектов шейдерных программ.
  • 64-разрядные компоненты с плавающей точкой для вершинных шейдеров (повышается геометрическая точность).

Новые расширения:

  • Sync-объекты OpenGL, связанные с event-объектами OpenCL.
  • Возможность установить значения в буфере трафарета (stencil) во фрагментном шейдере.
  • Некоторые особенности для улучшения надёжности, например, при запуске WebGL-приложений.
  • Механизмы обратной связи для получения ошибок и предупреждений.

OpenGL 4.2

8 августа 2011 года Khronos Group опубликовала спецификацию OpenGL 4.2 и языка шейдеров GLSL 4.2[10].

Нововведения:

  • Поддержка изменения произвольной части сжатой текстуры, без повторной загрузки в GPU текстуры целиком.
  • Поддержка упаковки нескольких 8- и 16-разрядных значений в одно 32-разрядное значение для эффективной обработки шейдеров со значительным сокращением используемого объёма памяти и повышением пропускной способности.

OpenGL 4.3

6 августа 2012 года Khronos Group опубликовала на SIGGRAPH 2012 спецификации OpenGL 4.3[11][12]. Кроме новых возможностей, OpenGL 4.3 приносит поддержку нового типа шейдеров через расширение GL_ARB_compute_shader. Новая версия обратно совместима с предыдущими.

OpenGL 4.4

Поддерживается видеокартами: AMD/ATi Radeon HD 5000/6000/7000/8000 и 200 серии, Nvidia GeForce 400/500/600/700/980 серии.

22 июля 2013 года Khronos Group на SIGGRAPH в Анахайм, Калифорния опубликовала спецификации OpenGL 4.4[13].

OpenGL 4.5

Поддерживается видеокартами: AMD/ATi Radeon на базе архитектуры GCN, Nvidia GeForce 400/500/600/700/800/900 серии.

11 августа 2014 года Khronos Group на SIGGRAPH в Ванкувере, Канада опубликовала спецификации OpenGL 4.5[14].

OpenGL 4.6

31 июля 2017 года Khronos Group опубликовала спецификации OpenGL 4.6. Основным нововведением является переносимое промежуточное представление шейдеров SPIR-V[англ.], изначально разработанное для API Vulkan[15].

Будущее OpenGL

Компания Apple в июне 2018 на мероприятии WWDC объявила устаревшими технологии OpenGL и OpenGL ES. [16]

Операционные системы Fuchsia и Stadia изначально поддерживают только Vulkan.

17 сентября 2021 Компания Valve удалила поддержку OpenGL из популярной игры Dota 2[17] [18]

Все новые игры начиная с 2016 года, использующие игровой движок id Tech 6 в качестве интерфейса рендеринга, используют Vulkan.

Игровой движок ID Tech 7 поддерживает только спецификацию Vulkan.

Atypical Games

Atypical Games при поддержке Samsung взяли на себя задачу внедрить в свой движок поддержку Vulkan. В конце концов стало ясно, что реализация Vulkan фактически заменит OpenGL на всех платформах, кроме Apple [19]

Игровой движок Unity Не поддерживает OpenGL/OpenGL ES для HDR pipeline [20]

Отсутствие поддержки актуальных графических технологий

OpenGL не поддерживает Трассировку лучей, API для декодирования видео на GPU в отличие от Vulkan

Mesh Shaders в OpenGL поддерживаются только на nVidia [21]

Cглаживание с алгоритмами глубокого обучения AMD FidelityFX Super Resolution(FSR) [22] [23] и Nvidia Deep Learning Super Sampling (DLSS) [24][25] не поддерживается для OpenGL

Vulkan

Vulkan, ранее известный как glNext, — новый API, отвечающий требованиям современных реалий и устраняющий основные недостатки OpenGL. Он предлагает более низкие накладные расходы и более непосредственный контроль над GPU. Khronos Group ведёт его разработку с 2014 года. Версия 1.0 была выпущена 16 февраля 2016 года[26].

См. также

Примечания

  1. https://www.khronos.org/opengl/wiki/History_of_OpenGL#OpenGL_1.0_.281992.29
  2. Registry (redirect). Дата обращения: 21 января 2006. Архивировано из оригинала 5 февраля 2008 года.
  3. GLSL + Optional features = OpenGL Mathematics (GLM). A C++ mathematics library for 3D graphics Архивная копия от 28 февраля 2009 на Wayback Machine (англ.)
  4. LWJGL Архивная копия от 25 января 2006 на Wayback Machine (англ.) — OpenGL-привязка для Java языка и другие компоненты для разработки игр
  5. Programming Language Bindings to OpenGL. Дата обращения: 29 октября 2008. Архивировано 2 ноября 2008 года.
  6. Exocortex | Computer graphics and simulation software. Дата обращения: 21 января 2006. Архивировано из оригинала 28 января 2006 года.
  7. The Khronos Group announced today it has released the OpenGL 3.0 specification (англ.). opengl.org (11 августа 2008). Дата обращения: 5 июня 2009. Архивировано из оригинала 25 августа 2011 года.
  8. Khronos Unleashes Cutting-Edge, Cross-Platform Graphics Acceleration with OpenGL 4.0. Khronos Press Releases (11 марта 2010). Дата обращения: 11 марта 2010. Архивировано из оригинала 25 августа 2011 года.
  9. Обзор новшеств OpenGL 4.0. OpenNet (???). Дата обращения: ???. Архивировано из оригинала 21 января 2012 года.
  10. Khronos Enriches Cross-Platform 3D Graphics with Release of OpenGL 4.2 Specification. Khronos Group (8 августа 2011). Дата обращения: 7 августа 2012. Архивировано из оригинала 25 августа 2011 года.
  11. Khronos Releases OpenGL 4.3 Specification with Major Enhancements. Дата обращения: 10 августа 2012. Архивировано 10 августа 2012 года.
  12. PCGamer, Khronos releases OpenGL 4.3. Дата обращения: 10 августа 2012. Архивировано 10 августа 2012 года.
  13. Khronos Releases OpenGL 4.4 Specification. Дата обращения: 22 июля 2013. Архивировано 29 октября 2013 года.
  14. Khronos Group Announces Key Advances in OpenGL Ecosystem. Дата обращения: 11 августа 2014. Архивировано 12 августа 2014 года.
  15. Khronos Releases OpenGL 4.6 with SPIR-V Support. Дата обращения: 1 августа 2017. Архивировано 31 июля 2017 года.
  16. Apple Inc. What's New in iOS - Apple Developer (англ.). developer.apple.com. — «Apps built using OpenGL ES will continue to run in iOS 12, but OpenGL ES is deprecated in iOS 13.» Дата обращения: 7 августа 2018. Архивировано 8 августа 2018 года.
  17. In the coming months, Dota 2 will remove support for 32-bit systems, OpenGL, and DirectX 9. Дата обращения: 18 октября 2021. Архивировано 18 октября 2021 года.
  18. Valve's Dota 2 to drop support for 32-bit systems, DirectX 9, and OpenGL. Дата обращения: 18 октября 2021. Архивировано 18 октября 2021 года.
  19. Jet Set Vulkan : Reflecting on the move to Vulkan. Дата обращения: 18 октября 2021. Архивировано 18 октября 2021 года.
  20. HDRP does not support OpenGL or OpenGL ES devices. Дата обращения: 17 января 2022. Архивировано 18 января 2022 года.
  21. Mesh Shaders
  22. AMD FidelityFX Super Resolution. Дата обращения: 17 мая 2022. Архивировано 30 апреля 2022 года.
  23. AMD FidelityFX™ Super Resolution (FSR). Дата обращения: 17 мая 2022. Архивировано 27 мая 2022 года.
  24. NVIDIA DLSS. Дата обращения: 2 марта 2022. Архивировано 2 марта 2022 года.
  25. Getting Started with DLSS. Дата обращения: 2 марта 2022. Архивировано 2 марта 2022 года.
  26. Khronos Releases Vulkan 1.0 Specification. Дата обращения: 25 сентября 2017. Архивировано 15 декабря 2017 года.

Литература

  • Ron Fosner. OpenGL Programming for Windows 95 and Windows NT. Addison-Wesley. ISBN 0-201-40709-4
  • Mark Kilgard. OpenGL for the X Window System. Addison-Wesley. ISBN 0-201-48359-9
  • OpenGL Architecture Review Board и др. OpenGL Reference Manual: The Official Reference Document to OpenGL, Version 1.4. Addison-Wesley. ISBN 0-321-17383-X
  • Randi J. Rost. OpenGL Shading Language. Addison-Wesley. ISBN 0-321-19789-5
  • OpenGL Architecture Review Board и др. OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 2, Fifth Edition. Addison-Wesley. ISBN 0-321-33573-2
  • Ву М., Дэвис Т., Нейдер Дж., Шрайндер Д. OpenGL. Руководство по программированию. Библиотека программиста. Питер, 2006. ISBN 5-94723-827-6
  • Рэнди Дж. Рост. OpenGL. Трёхмерная графика и язык программирования шейдеров. Для профессионалов. Питер, 2005. ISBN 5-469-00383-3, 0-321-19789-5
  • Richard S. Wright, Benjamin Lipchak. OpenGL SuperBible. 3rd ed. SAMS Publishing. ISBN 0-672-32601-9
  • Ричард С. Райт мл., Бенджамин Липчак. OpenGL. Суперкнига = OpenGL SuperBible. — 3 изд. — М.: Вильямс, 2006. — С. 1040. — ISBN 5-8459-0998-8.
  • Дональд Херн, М. Паулин Бейкер. Компьютерная графика и стандарт OpenGL = Computer Graphics with OpenGL. — 3-е изд. — М.: Вильямс, 2005. — 1168 с. — ISBN 5-8459-0772-1.
  • Эдвард Энджел. Интерактивная компьютерная графика. Вводный курс на базе OpenGL = Interactive Computer Graphics. A Top-Down Approach with Open GL. — 2-е изд. — М.: Вильямс, 2001. — 592 с. — ISBN 5-8459-0209-6.

Ссылки

Уроки, примеры и дополнительные ресурсы

Read other articles:

My Beloved SisterPromotional posterGenreDramaRomansaKeluargaDitulis olehKim Jung-sooSutradaraOh Kyung-hoonPemeranSong Yun-ahKim Sung-sooNegara asalKorea SelatanBahasa asliKoreaJmlh. episode55ProduksiDurasi60 minutesRilis asliJaringanMunhwa Broadcasting CorporationFormat gambar1080i HDTVRilis12 Agustus 2006 (2006-08-12) –18 Februari 2007 (2007-02-18) My Beloved Sister (Hangul: 누나; RR: Nuna; lit. Older Sister) adalah serial televisi Korea Selatan tahun 20…

Battle of Sugar PointPart of the American Indian WarsOjibways in a canoe on Leech Lake, 1896.DateOctober 5, 1898LocationLeech Lake, MinnesotaResult Chippewa victoryBelligerents Chippewa  United StatesCommanders and leaders Bugonaygeshig John M. Bacon Melville Wilkinson †Strength 19 warriors 500Casualties and losses none killed 7 killed (including 1 Indian Policeman shot by mistake)19 wounded vteEnd of American Indian Wars(1895–1924) Renegade period Bannock Uprising Yaqui Uprisi…

A chapter in the Book of Nehemiah Nehemiah 13← chapter 12Esther 1 →Greek Orthodox Icon of Nehemiah, mounted on solid wood.BookBook of NehemiahCategoryKetuvimChristian Bible partOld TestamentOrder in the Christian part16 Nehemiah 13 is the thirteenth (and the final) chapter of the Book of Nehemiah in the Old Testament of the Christian Bible,[1] or the 23rd chapter of the book of Ezra-Nehemiah in the Hebrew Bible, which treats the book of Ezra and the book of Nehemiah as one …

COVID-19 pandemic in North CarolinaA closed playground in Apex, North Carolina DiseaseCOVID-19Virus strainSARS-CoV-2LocationNorth Carolina, U.S.Index caseWake CountyConfirmed cases423,623Active cases26,228Severe cases2,541Hospitalized cases921 (current)Recovered341,041Deaths5,752Government websiteNC Department of Health and Human Services The COVID-19 pandemic was confirmed to have reached the U.S. state of North Carolina on March 3, 2020.[1] As of May 2021, North Carolina has the 10th h…

American lawyer Marian RyanDistrict Attorney of Middlesex CountyIncumbentAssumed office April 2013Preceded byGerard Leone Personal detailsBornAge 68–69[1]Cambridge, Massachusetts[2]NationalityAmericanPolitical partyDemocratic PartyAlma materEmmanuel College Boston College Law SchoolOccupationLawyerWebsitehttp://middlesexda.com/ Marian T. Ryan is the District Attorney (DA) of Middlesex County, Massachusetts, United States. She was the Commonwealth's only female District Atto…

American diplomat, banker, businessman, industrialist, philanthropist, and art collector For the Irish sprinter, see Andrew Mellon (athlete). Andrew Mellon42nd United States Ambassador to the United KingdomIn officeApril 9, 1932 – March 17, 1933PresidentHerbert HooverFranklin D. RooseveltPreceded byCharles G. DawesSucceeded byRobert Worth Bingham49th United States Secretary of the TreasuryIn officeMarch 9, 1921 – February 12, 1932PresidentWarren G. HardingCalvin CoolidgeHer…

Emma Rowena Nenek GatewoodLahir(1887-10-25)25 Oktober 1887Mercerville, Guyan Township, Gallia County, Ohio, Amerika SerikatMeninggal4 Juni 1973(1973-06-04) (umur 85)Gallipolis, Ohio, Amerika SerikatMakamOhio Valley Memory GardensTahun aktif1955 hingga 1973 (mendaki gunung)Dikenal atasMendaki Appalachian Trail dan tempat lainnyaSuami/istriPerry Clayton Gatewood [menikah 5 Mei 1907, bercerai Sept. 1940]Catatan Gallipolis Daily Tribune, June 4, 1973 Emma Rowena Gatewood, dikenal juga seba…

This article's lead section may be too short to adequately summarize the key points. Please consider expanding the lead to provide an accessible overview of all important aspects of the article. (October 2022) #6122 on the Q52 SBS heading north toward Elmhurst #200 on the Q25 Limited heading south toward Jamaica. The Metropolitan Transportation Authority (MTA) operates a number of bus routes in Queens, New York, United States, under two different public brands. Some of them are the direct descen…

  لمعانٍ أخرى، طالع تاريخ سياسة الولايات المتحدة الخارجية (توضيح). هذه المقالة بحاجة لصندوق معلومات. فضلًا ساعد في تحسين هذه المقالة بإضافة صندوق معلومات مخصص إليها. هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة به…

Cyrillic letter Cyrillic letter Che ShaPhonetic usage:/ɕ/The Cyrillic scriptSlavic lettersАА̀А̂А̄ӒБВГҐДЂЃЕЀЕ̄Е̂ЁЄЖЗЗ́ЅИІЇꙆЍИ̂ӢЙЈКЛЉМНЊОО̀О̂ŌӦПРСС́ТЋЌУУ̀У̂ӮЎӰФХЦЧЏШЩꙎЪЪ̀ЫЬѢЭЮЮ̀ЯЯ̀Non-Slavic lettersӐА̊А̃Ӓ̄ӔӘӘ́Ә̃ӚВ̌ԜГ̑Г̇Г̣Г̌Г̂Г̆Г̈г̊ҔҒӺҒ̌ғ̊ӶД́Д̌Д̈Д̣Д̆ӖЕ̃Ё̄Є̈ԐԐ̈ҖӜӁЖ̣ҘӞЗ̌З̣З̆ӠИ̃ӤҊҚӃҠҞҜК̣к̊қ̊ԚᴫЛ́ӅԮԒЛ̈ӍᵸН́ӉҢ…

Hindu temple in Himachal Pradesh, India Baijnath Templeबैजनाथ मंदिरReligionAffiliationHinduismDistrictKangraDeityLord Shiva as VaidyanathFestivalsMaha Shivaratri, Makar Sankranti, Vaisakha SankrantiLocationStateHimachal PradeshCountryIndiaLocation in Himachal PradeshGeographic coordinates32°05′01″N 76°57′59″E / 32.08361°N 76.96639°E / 32.08361; 76.96639ArchitectureTypeNagara StyleCreatorAhuka and ManyukaWebsitehttps://bababaijnath.in/ Bai…

Chattahoochee redirects here. For other uses, see Chattahoochee (disambiguation). River in Georgia, United States Chattahoochee RiverChattahoochee River at Jones Bridge Park in Peachtree Corners, GeorgiaMap of the Apalachicola River system with the Chattahoochee highlighted in dark blue.LocationCountryUnited StatesStatesGeorgia, Alabama, FloridaPhysical characteristicsSourcenear Jacks Knob • locationBlue Ridge Mountains, Chattahoochee National Forest, Georgia •…

حمام السلطان الأشرف إينالمعلومات عامةنوع المبنى حمامالمكان القاهرةالبلد  مصرارتفاع المبنىالارتفاع عن سطح البحر 30 متر معلومات أخرىالإحداثيات 30°03′02″N 31°15′40″E / 30.05056°N 31.26116°E / 30.05056; 31.26116 تعديل - تعديل مصدري - تعديل ويكي بيانات حمام السلطان الأشرف إينال يقع بش…

Leroy Sané Sané saat tampil bersama Tim nasional sepak bola Jerman pada tahun 2018Informasi pribadiNama lengkap Leroy Aziz Sané[1]Tanggal lahir 11 Januari 1996 (umur 28)Tempat lahir Essen, JermanTinggi 1,84 m (6 ft 1⁄2 in)[2]Posisi bermain Gelandang serangInformasi klubKlub saat ini Bayern MünchenNomor 10Karier junior2001–2005 SG Wattenscheid 092005–2008 Schalke 042008–2011 Bayer Leverkusen2011–2014 Schalke 04Karier senior*Tahun Tim Tampil (G…

Urban legend Nazi Gold TrainA partially-completed tunnel in Project Riese c. 2014.LocationWałbrzych, Central Sudetes, southwest Poland50°49′20″N 16°18′24″E / 50.82222°N 16.30667°E / 50.82222; 16.30667 (Location of the Nazi Gold Train excavations in Wałbrzych)Planned by GermanyObjectiveconceal an armored train loaded with valuables and treasure from the AlliesDate1945 – presentOutcomeunresolved; historians consider the story to b…

Pour l’article ayant un titre homophone, voir Monthion. Monthyon La mairie. Héraldique Administration Pays France Région Île-de-France Département Seine-et-Marne Arrondissement Meaux Intercommunalité Communauté d'agglomération du Pays de Meaux Maire Mandat Claude Decuypère 2020-2026 Code postal 77122 Code commune 77309 Démographie Gentilé Monthyonnais Populationmunicipale 1 749 hab. (2021 ) Densité 144 hab./km2 Géographie Coordonnées 49° 00′ 31″ …

1970 German Grand Prix Race detailsDate August 2, 1970Official name XXXII Großer Preis von DeutschlandLocation HockenheimringCourse Permanent racing facilityCourse length 6.790 km (4.219[1] miles)Distance 50 laps, 339.5 km (210.9 miles)Pole positionDriver Jacky Ickx FerrariTime 1:59.5Fastest lapDriver Jacky Ickx FerrariTime 2:00.5PodiumFirst Jochen Rindt Lotus-FordSecond Jacky Ickx FerrariThird Denny Hulme McLaren-Ford Lap leaders Motor car race The 1970 German Grand Prix was a Formula …

Sinfonia ManfredCompositorePëtr Il'ič Čajkovskij Tonalitàsi minore Tipo di composizionesinfonia Numero d'opera58 Epoca di composizione1885 Prima esecuzioneMosca, 11 (23) marzo 1886 PubblicazioneP. Jurgenson (Mosca), 1886 AutografoMuseo nazionale russo di musica, Mosca DedicaMilij Alekseevič Balakirev Durata media54' Organicoottavino, 3 flauti, 2 oboi, corno inglese, 2 clarinetti, clarinetto basso, 3 fagotti, 4 corni, 2 trombe, 2 cornette 3 tromboni, tuba, timpani, triangolo, tamburello, pia…

Medical conditionDacryoadenitisLacrimal gland(upper left)SpecialtyOphthalmology  Dacryoadenitis is inflammation of the lacrimal glands.[1] Symptoms Swelling of the outer portion of the upper lid, with possible redness and tenderness Pain in the area of swelling Excess tearing or discharge Swelling of lymph nodes in front of the ear Complications Swelling may be severe enough to put pressure on the eye and distort vision. Some patients first thought to have dacryoadenitis may turn ou…

Iranian football club This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Foolad F.C. – news · newspapers · books · scholar · JSTOR (May 2021) (Learn how and when to remove this message) Football clubFooladفولادFull nameFoolad Khuzestan Football ClubNickname(s)Foolad Mardaan (Men of Steel) Founded2 March …