Библиотеки opengl для linux

Linux.yaroslavl.ru

Linux потихоньку пробивается на компьютеры пользователей, а среди них, как известно, находятся любители поиграть — для них важна поддержка 3D. Владельцам видеокарт на базе чипов nVidia легче — скачиваем драйверы с сайта компании http://www.nvidia.com/ под вашу версию ядра Linux, а далее устанавливаем согласно инструкции. Но в последнее время стали пользоваться популярностью, и вполне заслужено, видеокарты на чипах конкурента — ATI. О настройке поддержки 3D в Radeon’ax и пойдет далее речь.

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

В четвертой версии XFree86 (http://www.xfree86.org/), как и в ядре серии 2.4.* , реализована технология DRI (Direct Rendering Infrastructure) , позволяющая включить аппаратную поддержку 3D-графики. Это специальная программная архитектура для координации работы ядра Linux, системы X-Window (см. статью «Настройка X-Window» МК «26-27 (249-250)), аппаратной поддержки 3D-графики и OpenGL-движка. В отличие от nVidia, которая предоставляет уже откомпилированные версии своих драйверов, ATI всячески поддерживает DRI-проект, и драйвера для ее карт поставляются в исходных текстах, что позволяет встроить их в ядро. В настоящее время ядром 2.4.20 поддерживается DRI для следующих карт: 3dfx Banshee/Voodoo3+ , ATI Rage 128 , ATI Radeon , Intel I810 , Intel 830M , Matrox g200/g400 и SiS , поэтому большинство нижесказанного касается и их, за исключением разве что опций конфигурирования X-Window. Но и это не все: при компиляции ядра с поддержкой DRI для соответствующей карты есть возможность вместо старых драйверов установить/подменить более свежую версию, и никто не догадается о подвохе. Но обо всем по порядку. Для всех действий понадобятся права root, и желательно, но для любителей острых ощущений необязательно, сделать бэкап всех упоминаемых в статье каталогов, чтобы в случае неудачи можно бы было спокойно вернуться к рабочей конфигурации.

Установка библиотек OpenGL.

Для начала необходимы библиотеки поддержки OpenGL (о DirectX, как вы понимаете, и речи быть не может). Марка OpenGL является зарегистрированным торговым знаком Silicon Graphics, Inc , в простонародье просто SGI . Естественно, за библиотеки такого уровня обычно требуют баксюки, причем иногда немалые, но нас это мало должно волновать, так имеется свободная версия библиотек, совместимых с API OpenGL от SGI — Mesa от Брайана Пауля (Brian Paul) . Проект существует и развивается уже давно, с августа 1993 года, первая версия библиотек увидела свет в феврале 1995, после чего у Брайана появилось довольно много добровольных помощников. Эти библиотеки эмулируют API библиотек OpenGL и разрабатываются с разрешения Silicon Graphics, но автор предупреждает, что не имеет лицензии от этой компании, также упоминает о возможной несовместимости продукта. В ноябре 2002 вышла в свет пятая версия Mesa, которая эмулирует API OpenGL версии 1.4. Если в вашем дистрибутиве нет Mesa-библиотек (что очень легко проверить, убедившись в наличие файлов libGL и/или libMesa , которые обычно находятся в /usr/X11R6/lib), их, естественно, придется сначала установить. В различных дистрибутивах пакеты могут называться по-разному, например, в RedHat 9 это XFree86-Mesa-libGL-4.3.0-2.i386.rpm, в АLTLinux — Mesa-4.0.2-alt1.i586.rpm, так что придется немного поискать. Зато, собрав OpenGL-библиотеки из исходников, можно увеличить производительность 3D процентов этак на двадцать. А посему идем на сайт http://www.mesa3d.org/ и скачиваем оттуда последнюю версию (1.58 Мб), для интереса можно скачать и демки (870 Кб) которые предлагаются на сайте, или трехмерный анализатор спектра в виде плагина к XMMS. Далее все просто:

Поздравляю, вы сделали это. Теперь проверяем результат:

Эта команда выдаст все, что она думает об установленном OpenGL. А чтобы воочию увидеть результат своей деятельности и заодно измерить fps, даем команду # glxgears.

Единственная неприятность может подстерегать при запуске приложений. Выглядит она примерно так:

Т.е. программа не может найти библиотеку libGL.so.1. Решается проблема в большинстве случаев очень просто — создается символическая ссылка с требуемым именем: # ln -s /usr/X11R6/lib/libGL.so.1.2 /usr/X11R6/lib/libGL.so.1 (или сразу в /usr/lib) и дается команда /sbin/ldconfig.

В принципе, можно теперь приступать к конфигурированию собственно X-Window, чтобы та смогла обнаружить нововведения. Но мы ведь договорились, что собираем дистрибутив с нуля, а потому скажем еще пару слов об опциях компиляции ядра.

В секции Character Devices необходимо выбрать пункты /dev/agpgart(AGP Support) , Direct Rendering Infrastructure и, наконец, определить используемую видеокарту — в нашем случае это ATI Radeon DRI 4.x driver . Все это должно компилироваться как модули. Дополнительно, для того чтобы указать процессору, что некоторые участки памяти (framebuffer и апертуры регистра видеокарточки) должны обрабатываться иначе — это ускоряет вывод 2D и рекомендуется для 3D, — во вкладке Processor type and features включаем MTRR ( Memory Type Range Register ). MTRR — это регистры, определяющие тип кэширования памяти для процессоров Intel Pentium Pro и выше (а также K6-2 и выше).

После этого ядро собрано и загружается без всяких там Kernel Panic. Признаю, что это получается не сразу, иногда приходится долго подбирать опции. У меня первая сборка удалась раза с десятого, зато сейчас отконфигурировать ядро — как два бита передать. В готовых же дистрибутивах обычно все уже включено, и можно переходить к следующему этапу.

Конфигурирование системы X-Window

Открываем файл XF86Config/XF86Config-4 в любимом текстовом редакторе и правим. В секции Section «Module» добавляем следующие строки:

А в Section «Device» проследите, чтобы обязательно было написано:

Впрочем, я встречал в рекомендациях и Driver «radeon» — если не будет получаться, то попробуйте и этот вариант, хотя, как мне кажется, это ошибка. Для карт Matrox пропишите Driver «mga», 3dfx Voodoo — tdfx, Intel — i810. Все, сохраняемся и выходим. После чего убиваем Х-сервер при помощи Ctrl+Alt+Backspase и наслаждаемся результатом. Для этого снова запускаем glxgears . При этом в /var/log/XFree86.0.log должно появиться «dri enabled». Если что-то не получилось, пробуем загрузить модуль ядра вручную — теоретически, Х-сервер должен сам его разыскать и загрузить. Все имеющиеся на данный момент модули можно найти в /lib/modules/2.4.x/kernel/drivers/char/drm/. Модуль для Radeon имеет нехитрое название radeon.o. Драйвер же DRI для Radeon (и остальных карт, поддерживающих эту технологию) должен быть в /usr/X11R6/lib/modules/dri/ и называется он radeon_dri.so. Он будет автоматически при необходимости загружен libGL.so. Для информации — 2D-драйвер Radeon имеет путь /usr/X11R6/lib/modules/drivers/radeon_drv.o.

Читайте также:  Installing metasploit kali linux

Проверяем при помощи /sbin/lsmod (или сat /proc/dri/0), загружен ли необходимый модуль. Если нет, загружаем:

Если все ОК, то добавляем (для RedHat и К) в файл /etc/modules.conf всего одну строку — radeon, после чего необходимый модуль будет загружаться автоматически при запуске системы. Поклонникам BSD-стиля (Slackware или CRUX) придется вписать строку полностью, т.е. /sbin/modprobe radeon, в файл rc.modules, который лежит либо в /etc либо в /etc/rc.d. После всех этих действий можно спокойно и, главное, без тормозов гонять либо пингвинов на пузе, либо монстров по кваке (а кто сказал, что в Linux не играют в Квейк? Брехня!)

Как правило, после выхода очередной моей статьи я обязательно получаю несколько писем от тех читателей, у кого «гранаты не той системы» (цитата из «Белого солнца пустыни» :-)). Это может быть связано с несколькими причинами: либо у них новая версия видеокарты, не поддерживаемая ядром (хоть вообще-то базовые функции все равно должны работать), либо отсутствует желание возиться с компиляцией ядра, либо — это уже серьезнее — драйвер предусматривает какие-то новые возможности, которые отсутствуют в свежей версии ядра. Выходом в данной ситуации будет установка правильных драйверов — незачем полностью скачивать (около 50 Мб) и затем пересобирать ядро, новые версии которого выходят не так уж и часто. Драйвера для ATI’шных карт можно откопать в Интернете аж в двух местах. Первое, что приходит в голову, — это официальный сайт ATI (http://www.ati.com/), на котором можно взять как закрытые драйвера, так и свободные их версии. Но я бы лучше пошел сразу на сайт проекта DRI (http://dri.sourceforge.net/home.phtml), где обычно лежат snapshots самых свежих версий драйверов. Качаем нужный (для Radeon’ов самый большой архив — 3.13 Мб), после чего распаковываем и запускаем скрипт install.sh (любители могут распихать по каталогам и вручную). Все. Свежак! Опции настройки для других видеокарт можно подсмотреть в DRI User Guide , который лежит тут же на сайте, в разделе 10. Hardware-Specific Information and Troubleshooting .

Теперь следующая проблема. Большинство производителей оснащают видеокарты с чипами Radeon видеовходом/выходом — грех было бы не воспользоваться возможностью посмотреть фильм на телевизоре или захватить пару интересных кадров. Есть проектец, который помогает решить и эти проблемы — GATOS (http://gatos.sourceforge.net/), предусматривающий поддержку большинства распространенных чипов. По этому адресу можно найти усовершенствованный драйвер ati.2, позволяющий воспользоваться этой возможностью, при этом поддерживаются на настоящий момент карты от Mach64 до Radeon 9700. Единственное — надо быть внимательным и скачивать драйвер именно под свою версию Х-Window, например, для 4.3.0 это будет ATI-4.3.0-9.i386.tar.gz. Установка заключается в распаковке архива и копировании образовавшегося каталога X11R6 в /usr, после чего все необходимые файлы в /usr/X11R6/lib/modules будут заменены новыми. Единственным дистрибутивом из попадавшихся мне в последнее время, в котором засветились gatos-драйвера, был ALTLinux . Для просмотра видео и ТВ здесь же на сайте лежит программа Avview , требующая наличия Tcl/Tk -библиотек; в большинстве дистрибутивов они уже имеются, а если нет — вперед, на http://tcl.sf.net/. Кстати, входящая в состав большинства дистрибутивов Xawtv (http://www.strusel007.de/linux/xawtv) тоже работает. При этом для захвата видео понадобится «very fast video and audio» конвертер FFmpeg (http://sourceforge.net/projects/ffmpeg) и ALSA-драйвера (http://www.alsa-project.org/), а также модули ядра km (http://gatos.sourceforge.net/km.php). После стандартных #./configure && make && make install можно попробовать захватить изображение с ТВ-входа. В простейшем случае это выглядит так (в более сложном придется повозится):

Можно при помощи данной программы и собрать, например, все .jpg-изображения в один видеофайл, при этом задаются шаблоны в стиле С:

Таким образом можно даже анимированные gif’ы создавать. Программа поддерживает большинство видео- и аудиокодеков. Имеется еще одна возможность, о которой стоит упомянуть, — трансляция захваченного видео в поток, который можно транслировать в Интернет. Для этого запускается программа ffserver .

Здесь же на сайте дополнительно можно найти GATOS-версию DRM-модулей ядра для Radeon. Так что выбирать есть из чего.

Для управления TV-out для карт Radeon предназначена еще одна утилита командной строки — atitvout , которую можно найти http://www.stud.uni-hamburg.de/users/lennart/projects/atitvout. Но самое интересное, что 3D можно наслаждаться не только под X-Window, есть также проект для framebuffer-консоли — -FBDRI (http://fbdri.sourceforge.net/), необходимые драйвера можно скачать с (http://prdownloads.sourceforge.net/fbdri/fbdri.031202.tar.bz2). Скорость работы приложений в консоли, естественно, выше, так что пользователи более слабых компьютеров смогут наслаждаться 3D.

Вот, в принципе, и все, на чем я хотел заострить внимание. Решение возникающих по ходу проблем можно найти в документации, доступной на перечисленных ресурсах. За чтением которой я вас и оставляю.

Источник

Знакомство с методикой разработки приложений на основе OpenGL

Оригинал: An Introduction to OpenGL Programming
Автор: Mihalis Tsoukalos
Дата публикации: 12 ноября 2014 г.
Перевод: А.Панин
Дата перевода: 7 октября 2015 г.

OpenGL является широко известным, мощным и функциональным стандартном генерации трехмерной, а также двухмерной графики. Тексты различных версий стандарта OpenGL разрабатывается и публикуется Ревизионной комиссией по архитектуре OpenGL (OpenGL Architecture Review Board — ARB).

Данная статья является подробным руководством по разработке простых приложений на основе OpenGL, которое поможет вам понять методику рисования примитивов с помощью функций OpenGL.

Читайте также:  Питомник цвергшнауцеров альт линукс

На момент написания данной статьи новейшей версией стандарта OpenGL является версия 4.4, в которой используется техника рисования примитивов, отличная от описанной в данной статье. Тем не менее, данная статья предназначена в первую очередь для знакомства читателя с философией OpenGL, а не для обучения читателя разработке приложений на основе новейшей версии OpenGL. Исходя из вышесказанного, представленный в статье исходный код может быть скомпилирован и использован даже на машинах, работающих под управлением дистрибутивов Linux с устаревшими версиями библиотек OpenGL.

Установка компонентов окружения разработки приложений на основе OpenGL

Если вы выполните в системе Debian 7 следующую команду, предназначенную для поиска всех пакетов программного обеспечения со словом «opengl» в названии, вы получите многострочный вывод (Рисунок 1):

Рисунок 1. Результат выполнения команды apt-cache search opengl

В Linux существует множество свободных реализаций библиотек OpenGL, но нам понадобится только одна из них. Я установил FreeGLUT, так как данная библиотека является самой современной. Библиотека FreeGLUT является свободной альтернативой библиотеки OpenGL Utility Toolkit (GLUT).

Для компиляции кода приложений на основе OpenGL также необходим компилятор языка C++.

Наконец, в некоторых случаях не обойтись без пакета программного обеспечения mesa-utils, так как в процессе разработки приложений в любом случае придется использовать утилиту glxinfo из его состава.

Утилита glxinfo выводит полезную информацию об установленных компонентах OpenGL в формате, представленном ниже:

Mesa является библиотекой для работы с трехмерной графикой, предоставляющей API, который практически не отличается API OpenGL.

Конвейер OpenGL

Рисунок 2, взятый из книги с описанием языка шейдеров OpenGL («The Orange Book»), схематично демонстрирует программируемый конвейер OpenGL с вершинными и фрагментными обработчиками. Как вы видите, конвейер OpenGL является достаточно сложным, но вам не нужно понимать принцип работы каждого из его компонентов для того, чтобы успешно использовать OpenGL. Схематичное изображение конвейера иллюстрирует принцип работы библиотек OpenGL. Конвейеры новых версий OpenGL являются еще более сложными!

Рисунок 2. Архитектура OpenGL

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

Код на языке шейдеров OpenGL, который предназначен для исполнения с помощью одного из программируемых процессоров OpenGL, называется шейдером (Shader). Язык шейдеров OpenGL уходит своими корнями в язык программирования C (рассмотрение языка шейдеров OpenGL выходит за рамки данной статьи).

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

При работе с трехмерной графикой интенсивно используется векторная алгебра, поэтому вам не помешает разобраться с тем, как складывать, умножать, вычитать и делить матрицы, хотя вам наверняка и не придется разрабатывать код для выполнения соответствующих операций самостоятельно. Также полезно разобраться с координатами в трехмерном пространстве и научиться создавать на бумаге эскизы разрабатываемых трехмерных сцен.

Рисование треугольника

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

Листинг 1. triangle.cc

Код инициализации OpenGL из Листинга 1 является достаточно длинным, но вам придется разобраться с ним лишь однажды, после чего он может повторно использоваться в других приложениях.

В системе Debian 7 следующая команда позволяет скомпилировать исходный код примера работы с OpenGL из файла triangle.cc без единого сообщения об ошибке:

В системе Ubuntu Linux исполнение этой же команды приводит к выводу следующего сообщения об ошибке:

Решение данной проблемы заключается в компиляции файла исходного кода программы triangle.cc со связыванием исполняемого файла с дополнительной библиотекой (-lGL):

Библиотека libGL.so принимает команды OpenGL и выполняет действия, необходимые для отражения результатов их исполнения на экране каким-либо образом. В том случае, если ваша графическая карта не поддерживает функции аппаратного ускорения вывода трехмерной графики, библиотека libGL будет использовать функции программного вывода графики средствами оконной системы X. Аналогичным образом работает и библиотека Mesa. Библиотека libGL может также передавать информацию о командах OpenGL оконной системе X при наличии расширения GLX данной системы. После этого оконная система X может либо осуществлять программную обработку команд с помощью библиотеки Mesa, либо использовать функции аппаратного ускорения.

При исполнении результирующего бинарного файла будет показано окно с треугольником, снимок которого приведен на Рисунке 3. Факт корректной компиляции файла исходного кода triangle.cc является доказательством того, что ваша система Linux может использоваться для разработки приложений, работающих с трехмерной графикой.

Рисунок 3. Рисование треугольника средствами OpenGL

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

Примечание: помните о том, что наиболее важной частью данной статьи является код!

Рисование куба с помощью OpenGL

Теперь давайте создадим приложение, которое будет рисовать куб с помощью OpenGL. Нам придется создать этот куб из треугольников. Куб имеет шесть плоскостей, причем каждая плоскость должна быть создана как минимум из двух треугольников. Причина, по которой я говорю «как минимум» заключается в том, что в общем случае вы можете использовать большее количество треугольников, если желаете придать трехмерному объекту более сглаженную или точную форму, но в случае рисования куба это замечание не актуально. Как вы, надеюсь, поняли, нам придется создать в общей сложности 12 треугольников.

Читайте также:  Эмулятор windows для симбиан

Кроме того, куб имеет восемь вершин. При этом каждая из вершин требует наличия трех других вершин.

В Листинге 2 приведен полный исходный код из файла cube.cc.

Листинг 2. cube.cc

На Рисунке 4 показаны два различных снимка окна приложения на основе исходного кода из файла cube.cc. На снимке слева показан простой квадрат, так как при запуске приложения вы видите лишь переднюю поверхность куба и не можете видеть другие пять поверхностей. Таким образом, показанный на экране объект выглядит как двухмерный. После того, как вы начнете вращать куб с помощью клавиш со стрелками, вы можете с определенностью сказать, что объект является трехмерным.

Рисунок 4. Графический вывод приложения на основе исходного кода из файла cube.cc

Подробное рассмотрение кода

Каждый треугольник описывается с помощью координат трех вершин. Каждая из этих вершин по своей сути является отдельной точкой (x,y,z). Каждая точка описывается с помощью трех чисел (координат), так как в OpenGL используется трехмерное пространство координат. Для создания куба необходимо описать параметры восьми вершин.

Для иллюстрации возможности создания более сложных трехмерных объектов передняя поверхность куба создана из четырех треугольников. На Рисунке 5 показаны координаты вершин четырех треугольников передней поверхности куба. Центральная точка (0,0,-0.6) была выбрана произвольным образом. Для формирования поверхности подойдет любая точка, находящаяся на этой поверхности.

Рисунок 5. Координаты вершин треугольников передней поверхности куба

На Рисунке 6 показаны координаты вершин куба для точки отсчета с координатами x=0.6, y=0.6 и z=0.6. Обратите внимание на то, что вершины на концах каждого из ребер куба имеют по две одинаковые координаты из трех.

Рисунок 6. Вершины куба

Как вы можете видеть на Рисунке 6, координаты четырех вершин передней поверхности куба отличаются от координат четырех вершин задней поверхности куба лишь значениями по оси z.

Описание параметров треугольников:

Треугольники строятся на основании параметров их вершин. Для построения каждого треугольника необходимо описать параметры трех вершин. Для построения каждой из поверхностей куба необходимы два треугольника за исключением передней поверхности, для построения которой были использованы четыре треугольника. Следующие команды предназначены для создания окрашенного треугольника на основе координат x, y и z.

Изменение цвета фигуры:

Вы можете изменить цвет фигуры с помощью команды glColor3f(. ) . Команда glColor3f(. ) принимает три параметра, которые представляют RGB-составляющие желаемого цвета.

Вы можете изменить перспективу сцены с помощью следующих команд:

Угол перспективы меняется в соответствии с тем, как пользователь нажимает клавиши со стрелками.

Рисование куба осуществляется от поверхности к поверхности. Для рисования каждой поверхности необходимо нарисовать два треугольника, за исключением передней поверхности, для рисования которой используются четыре треугольника.

После того, как вы получите корректные координаты треугольников, их рисование не будет представлять особых сложностей. Рисование каждого треугольника должно начинаться с вызова команды glBegin(GL_TRIANGLES) и заканчиваться вызовом команды glEnd() . GL_TRIANGLES является идентификатором примитива OpenGL. Существуют и другие идентификаторы примитивов: GL_POINTS , GL_LINES , GL_LINE_STRIP , GL_LINE_LOOP , GL_TRIANGLE_STRIP , GL_TRIANGLE_FAN , GL_QUADS , GL_QUAD_STRIP и GL_POLYGON . При этом в конечном счете каждый из примитивов OpenGL формируется из одного или нескольких треугольников.

Если вы рисуете фигуры с помощью треугольников ( GL_TRIANGLES ), порядок рисования вершин не важен. Если же вы рисуете фигуры с помощью прямоугольников ( GL_POLYGON ), рисование четырех вершин должно осуществляться в корректной последовательности, причем не важно, будет ли осуществляться обход вершин по часовой стрелке или против часовой стрелки. В том случае, если порядок рисования вершин будет нарушен, ваш прямоугольник не будет целостным.

Использование клавиш со стрелками:

Методика использования клавиш со стрелками является достаточно простой. В следующем фрагменте кода приложения осуществляется обработка события нажатия клавиши и, в случае установления факта нажатия одной из описанных клавиш, выполняется соответствующая операция:

Функция обратного вызова keyboard(. ) зарегистрирована в рамках функции main(. ) с помощью следующей строки кода:

Автоматическое вращение куба

В качестве бонуса давайте рассмотрим пример автоматического вращения куба (Рисунок 7).

В данном случае куб рисуется с помощью прямоугольников. Так как куб состоит из шести поверхностей, для его рисования требуется только шесть прямоугольников. В случае использования прямоугольников процесс рисования фигур значительно упрощается, причем одновременно с этим уменьшается объем исходного кода приложения, но при этом сложный код, использующий функции OpenGL, исполняется быстрее в случае использования треугольников.

Примечание: любой объект может быть разделен на отдельные треугольники, но треугольник не может быть разделен на что-либо, кроме треугольников.

Рисунок 7. Графический вывод приложения на основе исходного кода из файла rotateCube.cc

В Листинге 3 приведен исходный код приложения из фала rotateCube.cc

Листинг 3. rotateCube.cc

Обратите внимание на то, что реализации функции main(. ) в файлах исходного кода triangle.cc, cube.cc и rotateCube.cc очень схожи, несмотря на то, что три программы предназначены для выполнения различных задач.

Наиболее важным аспектом данного приложения является использование функции glutTimerFunc(. ) . Данная функция позволяет зарегистрировать функцию обратного вызова таймера update(. ) , которая будет периодически вызываться по прошествии заданного количества миллисекунд. Функция update(. ) изменяет угол сцены при каждом вызове.

Заключение

Разработка приложений на основе OpenGL не является самым простым занятием, но данная статья должна стать отправной точкой для быстрого ознакомления с основными аспектами процесса разработки приложений на основе данной технологии. Если вы хотите стать специалистом по OpenGL, вам придется самостоятельно практиковаться в написании других приложений для вывода трехмерной графики. OpenGL является на первый взгляд достаточно простой технологией, которой, тем не менее, достаточно сложно овладеть в совершенстве.

Благодарности

Я хотел бы выразить признательность доктору Nikos Platis за то, что но поделился со мной небольшой частью своих знаний, относящихся к технологии OpenGL.

Дополнительные ресурсы

Книга «Learning Modern 3D Graphics Programming»: http://www.arcsynthesis.org/gltut

Книга «OpenGL Superbible, 6th edition, Graham Sellers, Richard S. Wright and Nicholas Haemel, Addison Wesley, ISBN: 0321902947»

Источник

Оцените статью