как установить opengl на linux
OpenGL и Linux: Установка и настройка Code::Blocks
На этом уроке мы рассмотрим установку и настройку Code::Blocks в Linux для работы с OpenGL, а также запустим проект, рассмотренный на предыдущем уроке.
Подготовительные шаги
Установка будет происходить на чистой системе debian-10.3.0-amd64 XFCE под VMware. Я не буду описывать сам процесс установки ОС, ограничусь лишь скриншотом итоговой конфигурации системы:
На всякий случай избегайте кириллицы в путях и именах файлов.
Установка GLFW в Linux
Указываем необходимую нам папку:
Видим получившуюся распакованную папку glfw-3.3.2 :
Установка CMake в Linux
Теперь необходимо поставить систему сборки проектов CMake. Для этого в окне терминала выполните следующую команду:
sudo aptitude install cmake-gui
Указываем папку с исходниками GLFW и вторую папку, где должен будет появиться результат работы CMake (у себя для этого я создал папку build ), и нажимаем кнопку «Configure» :
В появившемся окне выбираем пункт «CodeBlocks – Unix Makefiles» и нажимаем кнопку «Finish» :
В результате видим… кучу ошибок (добро пожаловать в мир Linux):
sudo aptitude install xorg-dev
Возвращаемся в CMake и выставляем галочки так, как показано ниже:
В результате, в папке build у нас должен появиться файл проекта GLFW.cbp :
Установка Code::Blocks в Linux
Пришло время установить среду программирования Code::Blocks. Для этого возвращаемся в терминал и вводим следующую команду:
sudo aptitude install codeblocks
После установки иконка файла проекта поменяет свой внешний вид:
Открывается окно проекта, нажимаем на шестеренку и компилируем его:
После этого в папке build/src должен появиться скомпилированный файл библиотеки libglfw3.a :
Установка GLAD в Linux
Заходим на оф. сайт GLAD и указываем следующие настройки, после чего нажимаем кнопку «Generate» :
В результате нам будет предложено скачать архив glad.zip:
В итоге у вас должна получиться примерно следующая картина иерархии папок и файлов:
Создание проекта в Code::Blocks
Затем нажимаем кнопку «Next» :
Задаем имя проекту. Я назвал его CodeBlocks и выбрал папку /home/diego/OpenGL_Project/ :
В следующем окне должны быть следующие настройки:
Затем эти два файла нужно будет добавить в наш проект. Для этого вернемся обратно в Code::Blocks, нажмем правой кнопкой мыши на название нашего проекта и выберем пункт «Add files…» :
Добавляем в проект файлы glad.c и main.cpp :
Настало время подключить необходимые папки с заголовочными файлами и библиотеки, а также настроить компилятор и линкер. Для этого в Code::Blocks переходим в «Project» > «Build options…» :
Переходим на вкладку «Linker settings» и настраиваем её следующим образом:
Примечание: В правом окошке «Other linker options» необходимо указать следующие параметры:
Затем добавим дополнительные пути для поиска заголовочных и библиотечных файлов. Для этого переходим в «Search directories» > «Compiler» :
OpenGL программирование/Установка/Linux
Содержание
Установка OpenGL на Linux [ править ]
Большинство дистрибутивов Linux опираются на Mesa3D проект что бы обеспечить реализацию OpenGL. Они регулярно поставляют OpenGL библиотеки, а так же OpenGL ES 1.x и 2.0.
Точные имена пакетов необходимых для установки сильно зависят от дистрибутива. Ссылаясь на пакеты вашего дистрибутива, вы можете спасти себя от траты времени и головной боли в установке. Используйте ваш любимый менеджер пакетов и поиск по названию пакета. Вам, возможно, потребуется установить пакеты, с DEV суффиксом, это пакеты разработки (обычно файлы заголовков). Также смотрите в пакетах с lib-префиксом, которые относятся к библиотекам.
Установите GCC C/C++ компиляторы и связанные с ними инструменты, такие как make.
В общем, установите следущее:
Библиотеки [ править ]
В этом Викиучебнике, мы будем использовать GLEW, FreeGLUT и GLM, убедитесь, что вы установите библиотеки разработчика (примечание переводчика dev библиотеки):
Драйверы [ править ]
OpenGL является основным API 3D-графики в GNU/Linux-based системах. Если ваше устройство поддерживает 3D ускорение на GNU/Linux, оно, вероятно, включает в себя OpenGL.
OpenGL включается в драйверах, так что вы должны убедиться, что драйверы были установлены корректно, если вы хотите запускать программы с использованием OpenGL. Драйверы с открытым исходным кодом, на самом деле, используют реализацию Mesa в OpenGL. Фирменные драйверы поставляют собственную библиотеку OpenGL.
Фирменные варианты [ править ]
Компания Nvidia обеспечивает в целом хороший, но не свободный драйвер nvidia. fglrx драйвер для многих современных устройств AMD; он также имеет закрытый исходный код и доступен на сайте AMD.
Свободные/Open-Source варианты. [ править ]
Если ваш процессор Intel с встроенной графикой, то необходимые драйверы с открытым исходным кодом поставляются в качестве стандартной части ядра Linux.
Если у вас установлен один из новейших чипов, вам возможно придётся использовать посредственный fglrx драйвер. Однако AMD выпустила спецификации для своих чипов, ‘Radeon’ с открытым исходным кодом сделал свой путь, для того чтобы стать полнофункциональным 2D и 3D драйвером.
По состоянию на июнь 2013 года, большинство чипов AMD хорошо работают с исходным драйвером «Radeon». 3D производительность с драйвером AMD Catalyst на современных картах еще лучше, но это может измениться в будущем. Можете проверить таблицу характеристик.
Nouveau драйвер с открытым исходным кодом поддерживает чипсеты NVIDIA, но в момент написания не так полон, как драйвера с закрытым исходным кодом от NVIDIA, поддержка 3D может быть не удовлетворительна.
Драйвер OpenGL на Linux-системах состоит из двух файлов:
А так же многие OpenGL приложения требуют libGLU.so; Операции GLU не могут быть аппаратно ускоренны, поэтому реализация Mesa является отличным вариантом.
Проверьте ваши сведения о OpenGL [ править ]
Введите это в терминале, чтобы получить больше информации о вашем OpenGL драйвере, включая поддерживаемые расширения:
IDEs [ править ]
The tutorials will mostly rely on simple Makefile s to build the code, and let you edit the source with your favorite text editor, such as Emacs, vim, gedit, kwrite, etc.
Существует несколько IDE для GNU/Linux, такие как:
Очень просто преспособить Мейкфайлы к этим системам.
Installing your own OpenGL headers [ править ]
In the unlikely event that your distribution does not supply packages for Mesa3D, you can build it from source with the usual
installation procedure; however, be careful of conflicting opengl libraries.
Mesa’s software implementation may override your distribution’s libraries or libraries manually installed, such as the nvidia or fglrx OpenGL binaries. When this happens, search all directories listed with
for libGL.so. The following command should output all the different OpenGL libraries available on your system:
It is usually OK if you have one the mesa library plus the proprietary library. On 64-bits systems, you may also have the lib32 library. Additional copies of libGL.so found in the ld search path (specified in /etc/lf.so.conf by default), if not referring to the same file, usually indicates a conflict. Remove all but the copy you want executed.
«Official» OpenGL headers are available from SGI, however, they are hopelessly out of date.
Nvidia OpenGL Configuration mini-HOWTO
Robert B Easter
Перевод: Александр Ермолаев, SWSoft Pte Ltd.
Этот miniHOWTO описывает способ, как установить драйвера OpenGL под Linux для видеокарты Nvidia. В дополнение к этому, документ объясняет, как установить XFree86, библиотеку OpenGL Utility (часть библиотеки Mesa), OpenGL Utility Toolkit (glut), полный набор страниц руководства по OpenGL, а также библиотеку Qt и ее расширения OpenGL, т.о. пользователи будут иметь основу для разработки OpenGL приложений под Linux.
1. Введение
Этот miniHOWTO описывает способ, как установить драйвера OpenGL под Linux для видеокарты Nvidia. В дополнение к этому, документ объясняет, как установить XFree86, библиотеку OpenGL Utility (часть библиотеки Mesa), OpenGL Utility Toolkit (glut), полный набор страниц руководства по OpenGL, а также библиотеку Qt и ее расширения OpenGL, т.о. пользователи будут иметь основу для разработки OpenGL приложений под Linux.
1.1. Новые версии этого документа
Последнюю версию этого документа можно найти на странице:
1.2. Copyright Information
This document is copyrighted (c) 2000 Robert B. Easter and is distributed under the terms of the Linux Documentation Project (LDP) license, stated below.
Unless otherwise stated, Linux HOWTO documents are copyrighted by their respective authors. Linux HOWTO documents may be reproduced and distributed in whole or in part, in any medium physical or electronic, as long as this copyright notice is retained on all copies. Commercial redistribution is allowed and encouraged; however, the author would like to be notified of any such distributions.
All translations, derivative works, or aggregate works incorporating any Linux HOWTO documents must be covered under this copyright notice. That is, you may not produce a derivative work from a HOWTO and impose additional restrictions on its distribution. Exceptions to these rules may be granted under certain conditions; please contact the Linux HOWTO coordinator at the address given below.
In short, we wish to promote dissemination of this information through as many channels as possible. However, we do wish to retain copyright on the HOWTO documents, and would like to be notified of any plans to redistribute the HOWTOs.
If you have any questions, please contact
1.3. Авторские права
Авторские права на русский перевод этого текста принадлежат © 2000 SWSoft Pte Ltd. Все права зарезервированы.
Этот документ является частью проекта Linux HOWTO.
Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но так или иначе автор текста и автор перевода желали бы знать о таких дистрибутивах.
Все переводы и производные работы, выполненные по документам Linux HOWTO должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO с которым можно связаться по адресу приведенному ниже.
1.4. Ответственность
Я не несу никакой ответственности за содержание этого документа. Используйте идей, примеры и другое содержимое документа на свой страх и риск.
Все авторские права принадлежат их владельцам, если нет специального уточнения.
Упоминание специфических продуктов или торговых марок, которое имеет место в этом документе, не должно расцениваться как их подтверждение их качества.
2. Загрузка пакетов программ
Также требуется XFree86 4.0 или выше, предпочтительнее 4.01. Его инсталляция будет описана позже.
XFree86 содержится в трех файлах:
Doctools используется для подготовки X документации.
Включает glX, интерфейс для OpenGL X. Каждая графическая оконная система (MS Windows, X и т.п.) предоставляет платформенно-определенный интерфейс между OpenGL и системой, чтобы обеспечивать отображение GL контекста в окнах.
Страницы руководства OpenGL.
XFree86 идет только со страницами руководства glX. Если вы хотите полностью установить страницы руководства OpenGL, вы должны получить их сами.
Эти страницы руководства представлены в формате, готовом для распаковки в каталог XFree86, см. ниже.
Glut обеспечивает графическую систему независимым интерфейсом между OpenGL и любой поддерживаемой графической системой. Например, в X Window скрываются подробности использования функций glX, при создании окна. Программисты могут один раз написать код и скомпилировать его для работы в MS Windows или X и т.п., при условии, что библиотека GLUT доступна на данной платформе.
Вам нужно установить GLU и GLUT, если вы хотите иметь возможность компилировать большинство программ, которые можно свободно загрузить (исходный код). Некоторым программам могут даже быть необходимы эти библиотеки, если они связаны с ними динамически.
qt-x11-2.1.0.tar.gz или более новая версия
Qt имеет расширение (qt/ententions/opengl) для OpenGL, которое обеспечивает создание OpenGL контекста в программах, написаных с помощью Qt. Она обеспечивает некоторую альтернативу GLUT и использует функции glX напрямую, плюс, добавляет полный доступ к qt элементам и кросс-платформенную переносимость.
Она полезна, если вы хотите компилировать или разрабатывать программы, основанные на Qt.
XFree86 4.0.1, кажется, содержит ядро Mesa 3.3, однако в нем отсутствуют некоторые файлы libGLU*, которые требуют многие программы.
3. Установка XFree86
Когда вы распакуете файлы man*.tar.Z (см. выше), будут добавлены два новых каталога: gl и glu.
Когда X установлен и выполняется (позже), попробуйте использовать программу xman, чтобы просмотреть руководства gl,glx,glu и glut из секции 3.
4. Установка Mesa
5. Установка драйверов Nvidia OpenGL
Вы можете разместить эту команду в одном из загрузочных файлов, например /etc/rc.d/rc.modules
6. Установка Qt
7. Установка GLUT
Установка GLUT имеет некоторые хитрости. Я не очень знаком с программой imake, которая используется для управления файлами Makefile. И я не совсем понял, как установить GLUT, туда куда я хотел (/usr/lib). Во любом случае, это можно сделать вручную:
8. Заключительные комментарии
К данному моменту вы должны иметь полностью функциональную систему OpenGL для выполнения и разработки OpenGL приложений.
shamiul94 / How to install opengl in ubuntu.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
This comment has been minimized.
Copy link Quote reply
bhavik-knight commented Feb 3, 2021
Thank man, you’re a life-saver. It helped me running on WSL-Ubuntu running within Mobaxterm with VSC on windows.
This comment has been minimized.
Copy link Quote reply
shamiul94 commented Feb 3, 2021
@bhabik-knight Happy to be of help. Kindly share if you had to make any modifications to these commands to make it work on your OS configuration so that the next user doesn’t have to reinvent the wheel.
This comment has been minimized.
Copy link Quote reply
bhavik-knight commented Feb 5, 2021
I didn’t have to modify any command. I just use Makefile to automate the building task. So that linkers are linked properly. Thank you so much!
This comment has been minimized.
Copy link Quote reply
ominusliticus commented Mar 28, 2021 •
I seem to be having the issue:
I called the file test.cpp instead of main.cpp
This comment has been minimized.
Copy link Quote reply
bhavik-knight commented Mar 31, 2021
#include
is the correct header to include @ominusliticus
This comment has been minimized.
Copy link Quote reply
LinuxRocks2000 commented May 4, 2021 •
Installed everything following this tutorial, when I compile a glew/GLFW project it works but upon running it gives Assertion `tls->posix.allocated == GLFW_TRUE’ failed and aborts. Is this a quirk of my operating system (Kubuntu 20.04), or do I need to install compatibility libraries?
This comment has been minimized.
Copy link Quote reply
GithungoIan commented Jun 6, 2021
Thanks a lot this was very much helpful I was able to create my first window and draw a Polygon. I am running Ubuntu 20.04
This comment has been minimized.
Copy link Quote reply
Yvn919 commented Jun 22, 2021
This comment has been minimized.
Copy link Quote reply
EvanNibbe commented Jul 9, 2021
Dude, you are a lifesaver, this is the first time I have ever made C++ code create a pop-up graphical item!
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
OpenGL Programming/Installation/Linux
Contents
OpenGL Installation on Linux [ edit | edit source ]
Most Linux distributions rely on the Mesa3D project to provide their OpenGL implementation. This supplies libraries for regular OpenGL as well as OpenGL ES 1.x and 2.0.
The exact names of the packages you need to install are highly dependent on distribution. Referring to your distro’s packages can save you a lot of time and headache in installation. Use your favorite package manager and search for the package name. You may need to install packages that come with a dev suffix, these are development packages (usually header files). Also look for packages with a lib prefix, which refer to libraries.
Install the GCC C/C++ compilers and associated tools such as make.
All in all, install Mesa, Make and GCC/g++:
Libraries [ edit | edit source ]
In this wikibooks, we’ll make great use of GLEW, SDL2 (+SDL2_Image), GLM and FreeType. Make sure you install the development libraries:
Drivers [ edit | edit source ]
OpenGL is the primary 3D graphics API on GNU/Linux-based systems. If your device supports 3D acceleration on GNU/Linux, it probably includes an OpenGL distribution.
OpenGL is included in drivers, so you’ll have to make sure drivers are properly installed if you want to enjoy programs using OpenGL. Open source drivers actually make use of Mesa’s OpenGL implementation. Proprietary drivers embed their own OpenGL library.
Proprietary options [ edit | edit source ]
Nvidia provides generally excellent but non-open source drivers via the nvidia driver from their website. fglrx drives many modern AMD devices; it is also closed-source, and available from AMD’s website.
Free/Open-Source options [ edit | edit source ]
If your CPU is an Intel one with built-in graphics, then the necessary open-source drivers come as a standard part of the Linux kernel.
If you have one of the newest chips, you may be forced to use the mediocre fglrx driver. However since AMD released the specifications for their chips, the open source ‘radeon’ made its way to become a full-featured 2D and 3D driver.
As of June 2013, most AMD chips will run well with the open source ‘radeon’ driver. 3D performance is still better with the AMD Catalyst driver on modern cards, but this may change in the future. Check the feature matrix for a completion status.
The open-source nouveau driver supports nVidia chipsets, but at the time of writing is not as complete as nVidia’s closed-source drivers, 3D support may not be satisfactory.
The OpenGL driver on Linux systems consists of two files:
Many OpenGL applications require libGLU.so as well; GLU operations are not hardware-accelerated, so the implementation provided by Mesa is an excellent option.
Check your OpenGL installation [ edit | edit source ]
Type this in a terminal to get much info about your OpenGL driver, including supported extensions:
IDEs [ edit | edit source ]
The tutorials will mostly rely on simple Makefile s to build the code, and let you edit the source with your favorite text editor, such as Emacs, vim, gedit, kwrite, etc.
Several IDEs exist for GNU/Linux, such as:
It is very simple to adapt the Makefiles to these environments.