Меню Рубрики

Как установить opengl на linux mint

OpenGL и Linux: Установка и настройка Code::Blocks

Обновл. 10 Апр 2020 |

В этом уроке мы рассмотрим установку и настройку Code::Blocks в Linux для работы с OpenGL, а также запустим проект из предыдущего урока.

Подготовительные шаги

Установка будет происходить на чистой системе debian-10.3.0-amd64 XFCE под VMWare. Я не буду описывать сам процесс установки ОС, ограничусь лишь скриншотом итоговой конфигурации системы:

Также для данного проекта я в домашней папке своего пользователя создал каталог OpenGL_Project , полный путь к которому выглядит как /home/diego/OpenGL_Project/ , где diego — это имя моего пользователя в системе. У вас оно наверняка будет другим. Учитывайте это!

На всякий случай избегайте кириллицы в путях и именах файлов.

Ещё один момент: для установки новых пакетов в Linux я привык пользоваться программой aptitude , а не стандартной apt-get . Поэтому вы можете поступить следующим образом:

Вариант №1: Установить aptitude , для этого в терминале выполните команду sudo apt-get install aptitude .

Вариант №2: Можете пользоваться стандартной программой apt-get . Но учтите, что, если по ходу данного туториала встречается установка пакета командой вроде sudo aptitude install НАЗВАНИЕ_ПАКЕТА , то в вашем варианте команда установки пакета должна выглядеть как sudo apt-get install НАЗВАНИЕ_ПАКЕТА .

Установка GLFW в Linux

Распаковываем скачанный архив в папку /home/diego/OpenGL_Project/ , я пользуюсь архиватором Xarchiver:

Указываем необходимую нам папку:

Видим получившуюся распакованную папку glfw-3.3.2 :

Установка CMake в Linux

Теперь необходимо поставить систему сборки проектов CMake. Для этого в окне терминала выполните следующую команду:

sudo aptitude install cmake-gui

Указываем папку с исходниками GLFW и вторую папку, где должен будет появиться результат работы CMake (у себя для этого я создал папку build ), и нажимаем на кнопку «Configure» :

В появившемся окне выбираем пункт «CodeBlocks – Unix Makefiles» и нажимаем на кнопку «Finish» :

В результате видим… кучу ошибок ( добро пожаловать в мир Linux, мир боли и страданий ):

Нажимаем на «ОК» , снова возвращаемся в терминал и устанавливаем пакет xorg-dev :

sudo aptitude install xorg-dev

Возвращаемся в CMake и выставляем галочки так, как показано ниже:

И снова нажимаем на кнопку «Configure» (дважды), а потом на кнопку «Generate» . Видим сообщения об успешном конфигурировании и сборки проекта:

В результате, в папке build у нас должен появиться файл проекта GLFW.cbp :

Установка Code::Blocks в Linux

Пришло время установить среду программирования Code::Blocks. Для этого возвращаемся в терминал и вводим следующую команду:

sudo aptitude install codeblocks

После установки, иконка файла проекта поменяет свой внешний вид:

Открываем данный файл, в результате чего будет запущен Code::Blocks и появится окно с выбором компиляторов. В системе должен присутствовать как минимум один компилятор — GNU GCC Compiler . Жмём «ОК» :

Открывается окно проекта, нажимаем на шестерёнку и компилируем его:

После этого в папке build должен появиться скомпилированный файл библиотеки libglfw3.a :

Установка GLAD в Linux

Заходим на оф. сайт GLAD-а и указываем следующие настройки, после чего нажимаем на кнопку «Generate» :

В результате нам будет предложено скачать архив glad.zip:

Далее, чтобы внести немного порядка и организованности в наш будущий проект, поместите папки include и src , содержащиеся в данном архиве, в папку /home/diego/OpenGL_Project/ .

Затем скопируйте папку /home/diego/OpenGL_Project/glfw-3.3.2/include/GLFW в папку /home/diego/OpenGL_Project/include/ .

Также создайте папку lib в /home/diego/OpenGL_Project/ и скопируйте в неё файл скомпилированной библиотеки libglfw3.a .

В итоге у вас должна получиться примерно следующая картина иерархии папок и файлов:

Создание проекта в Code::Blocks

Запускаем Code::Blocks и создаём новый пустой проект «File» -> «New» -> «Project…» и выбираем «Empty Project» :

Затем нажимаем на кнопку «Next» :

Задаём имя проекту. Я назвал его CodeBlocks и выбрал папку /home/diego/OpenGL_Project/ :

В следующем окне должны быть следующие настройки:

Теперь скопируйте файл glad.c из папки /home/diego/OpenGL_Project/src/ в папку с проектом /home/diego/OpenGL_Project/CodeBlocks/ .

Также создайте файл main.cpp в папке /home/diego/OpenGL_Project/CodeBlocks/ .

Затем эти два файла нужно будет добавить в наш проект. Для этого вернёмся обратно в Code::Blocks, нажмём правой кнопкой мыши по названию нашего проекта и выберем пункт «Add files…» :

Добавляем в проект файлы glad.c и main.cpp :

Настало время подключить необходимые папки с заголовочными файлами и библиотеки, а также настроить компилятор и линкер. Для этого в Code::Blocks переходим в «Project» -> «Build options…» :

Переходим на вкладку «Linker settings» и настраиваем её следующим образом:

Примечание: В правом окошке «Other linker options» необходимо указать следующие параметры:

-lglfw3 -ldl -lX11 -lpthread -lm -lXrandr -lXi

Затем добавим дополнительные пути для поиска заголовочных и библиотечных файлов. Для этого переходим в «Search directories» -> «Compiler» :

Затем подобные действия проделываем и для вкладки «Linker» , указывая путь к папке lib :

Источник

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.

Проверяем при помощи /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.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Как установить onedrive на linux mint
  • Как установить mt4 на linux
  • Как установить minecraft на linux mint
  • Как установить make linux
  • Как установить mac linux