OpenGL
OpenGL (Open Graphics Library) is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics.
Development of OpenGL ceased in 2017 in favour of Vulkan, the «next generation» API which offers higher performance on newer hardware.
Installation
To run applications that use OpenGL, you will need to install the correct driver(s) for your hardware (either GPUs or CPUs).
- For AMD (and ATI) it is recommended to use the open-source drivers unless you have a strong reason to use the proprietary ones.
- For NVIDIA, the proprietary driver is recommended for cards newer than the Kepler (NVE0/GKXXX) series, and/or better performance in general.
- Intel’s GenN hardware does not refer to the generation of the CPU, it refers to the generation of the GPU, which is different from the generation of the CPU.
- To find the family of an AMD (and ATI) GPU, check Wikipedia:List of AMD graphics processing units#Features overview
- To find the code-name of an NVIDIA GPU, check the code-name list from the Nouveau project
Mesa is an open-source OpenGL implementation, continually updated to support the latest OpenGL specification. It has a collection of open-source drivers for Intel graphics, AMD (formerly ATI) and NVIDIA GPUs. Mesa also provides software rasterizers, such as llvmpipe.
There are two Mesa packages, each with a distinct set of drivers:
- mesa is the up-to-date Mesa package which includes most of the modern drivers for newer hardware:
- r300 : for AMD’s Radeon R300, R400, and R500 GPUs.
- r600 : for AMD’s Radeon R600 GPUs up to Northern Islands. Officially supported by AMD.
- radeonsi : for AMD’s Southern Island GPUs and later. Officially supported by AMD.
- nouveau : Nouveau is the open-source driver for NVIDIA GPUs.
- virtio_gpu : a virtual GPU driver for virtio, can be used with QEMU based VMMs (like KVM or Xen).
- vmwgfx : for VMware virtual GPUs.
- i915 : for Intel’s Gen 3 hardware.
- crocus : for Intel’s Gen 4 to Gen 7 hardware.
- iris : for Intel’s Gen 8 hardware and later. Officially supported by Intel.
- zink : a Gallium driver used to run OpenGL on top of Vulkan.
- d3d12 : for OpenGL 3.3 support on devices that only support D3D12 (i.e. WSL).
- swrast : a legacy software rasterizer.
- softpipe : a software rasterizer and a reference Gallium driver.
- llvmpipe : a software rasterizer which uses LLVM for x86 JIT code generation and is multi-threaded.
- mesa-amber is the legacy Mesa package which includes the classic (non-Gallium3D) drivers for older hardware:
- i830 : for Intel’s Gen 2 hardware. Same binary as i965 .
- i915 : for Intel’s Gen 3 hardware. Same binary as i965 .
- i965 : for Intel’s Gen 4 hardware and later. Officially supported by Intel.
- radeon : for AMD’s Radeon R100 GPUs. Same binary as r200 .
- r200 : for AMD’s Radeon R200 GPUs.
- nouveau_vieux : for NVIDIA NV04 (Fahrenheit) to NV20 (Kelvin) GPUs.
- swrast : a legacy software rasterizer.
Note: When using Mesa, the correct driver should be selected automatically, thus no configuration is needed once the package is installed.
- nvidia-utils is the proprietary driver for NVIDIA GPUs, which includes an OpenGL implementation.
- amdgpu-pro-oglpAUR is the proprietary driver for AMD GPUs.
Verification
To verify your OpenGL installation, you can use mesa-utils glxinfo , which should display output like this (with different values depending on your setup, of course):
OpenGL vendor string: X.Org OpenGL renderer string: AMD RV620 (DRM 2.50.0 / 5.10.12-arch1-1, LLVM 11.0.1) OpenGL core profile version string: 3.3 (Core Profile) Mesa 20.3.4 OpenGL core profile shading language version string: 3.30 OpenGL core profile context flags: (none) OpenGL core profile profile mask: core profile OpenGL core profile extensions: OpenGL version string: 3.0 Mesa 20.3.4 OpenGL shading language version string: 1.30 OpenGL context flags: (none) OpenGL extensions: OpenGL ES profile version string: OpenGL ES 3.0 Mesa 20.3.4 OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00 OpenGL ES profile extensions:
From the same package, you can also use glxgears as a basic OpenGL test. You should see 3 rotating gears when running the program.
Switching between drivers
Note: According to this Reddit post, you can use 2 GPUs from different vendors working at the same time using PRIME without any problems.
Mesa
You can override the driver used for an application with the following environment variable:
MESA_LOADER_DRIVER_OVERRIDE=driver
By default, Mesa searches for drivers in /lib/dri/ . You can view the list of installed drivers with
driver in driver_dri.so is the actual name of the driver. If Mesa failed to find the specified driver, it will fall back to llvmpipe .
You can also use an OpenGL software rasterizer by setting the following environment variables:
LIBGL_ALWAYS_SOFTWARE=true GALLIUM_DRIVER=driver
driver can be either softpipe , llvmpipe , or swr .
OpenGL over Vulkan (Zink)
The Zink driver is a Gallium driver that emits Vulkan API calls instead of targeting a specific GPU architecture. This can be used to get full desktop OpenGL support on devices that only support Vulkan.
If you are experiencing issues in your default OpenGL drivers (a bug in RadeonSI, Iris, etc.), you could try using the Zink driver.
According to this Phoronix benchmark, the average FPS might be lower in some applications compared to RadeonSI.
To use Zink on NVIDIA drivers, use this command or similar:
$ env __GLX_VENDOR_LIBRARY_NAME=mesa MESA_LOADER_DRIVER_OVERRIDE=zink GALLIUM_DRIVER=zink application
Development
Note: This section is for developers who want to use OpenGL in projects. End users should not need anything from this section.
Using OpenGL in code requires functions loader, read more at Khronos.
This article or section needs expansion.
OpenGL Hardware Database
GPUInfo provides user reported GPU/driver combinations, supported extensions, capabilities, etc. This information is useful for verifying compatibility / compliance of particular hardware under both OpenGL and Vulkan.
myconlineblog
Installing OpenGL and SDL on Linux Mint and Ubuntu
Installing OpenGL and SDL can be a right pain if you try to do it on windows especially if you are using Code::Blocks however on Linux Mint and Ubuntu it is exceptionally easy. Generally for programming and installing Libraries for C++ or modules for Python Linux is the easier option of the 2. This is due to the package manager system which Linux employs and because they are then available for your use so long as you know how to compile programs with them or have set your IDE up to use them in the project. For this example I am going to be using Code::Blocks.
SDL and OpenGL are the two foundations to making GUI programs. These two libraries make up the basics (although they are far from basic themselves) of GUI programming. Both are very powerful and when used together there is not much that cannot be accomplished with SDL being able to read keystrokes and mouse movements and OpenGL being the backbone of drawing graphics on the screen.
I’ve discussed how easy Linux is to use before however when installing OpenGL and SDL I found that I could not get my programs to compile on Windows meaning that when I am developing using these two libraries I use my Linux machine instead (in fact it is for this very reason that my Linux machine has once again become my more commonly used machine).
How do you install OpenGL and SDL on a Linux Mint or Ubuntu machine? Well four commands should do it however it is not so simple to compile so I think that will be a topic for Saturdays post.
Installing OpenGL and SDL is incredibly easy and here is how you do it:
sudo apt-get update sudo apt-get install libglm-dev sudo apt-get install libglew-dev sudo apt-get install libsdl2-dev
So that’s it. Those are the development libraries for OpenGL and SDL2 installed. I warn you though these are not the easiest of things to get started with and I would recommend that you proceed slowly and take your time when trying to learn these libraries although they are great fun to learn.
Как установить Mesa (OpenGL) в Linux Mint
wikiHow работает по принципу вики, а это значит, что многие наши статьи написаны несколькими авторами. При создании этой статьи над ее редактированием и улучшением работали авторы-волонтеры.
Количество просмотров этой статьи: 47 571.
Mesa – это реализация графического API OpenGL, обеспечивающая высокую производительности при работе с 3D графикой. Технически, это просто спецификация, реализуемая драйвером видеокарты. Нет такого понятия, как библиотека OpenGL SDK. Есть файл libGL.so, поставляемый вместе с драйвером. Чтобы его использовать, вам нужна привязка к выбранному вами языку программирования. Если это язык C, привязка состоит из заголовочных файлов. Однако вы, вероятно, хотите использовать расширения OpenGL, что легко сделать с помощью GLEW.
Разнообразие драйверов устройств позволяет использовать Mesa в различных средах, начиная с программной эмуляции и завершая аппаратным ускорением современных видеочипов. Mesa связана с рядом других проектов с открытым исходным кодом: Direct Rendering Infrastructure и X.org, и обеспечивает поддержку OpenGL пользователям X в Linux, FreeBSD и других операционных систем.
Подготовка операционной системы Linux Mint для OpenGL Development
- Введите/скопируйте/вставьте: sudo apt-get update
- Введите/скопируйте/вставьте: sudo apt-get install freeglut3
- Введите/скопируйте/вставьте: sudo apt-get install freeglut3-dev
- Введите/скопируйте/вставьте: sudo apt-get install binutils-gold
- Введите/скопируйте/вставьте: sudo apt-get install g++ cmake
- Введите/скопируйте/вставьте: sudo apt-get install libglew-dev
- Введите/скопируйте/вставьте: sudo apt-get install g++
- Введите/скопируйте/вставьте: sudo apt-get install mesa-common-dev
- Введите/скопируйте/вставьте: sudo apt-get install build-essential
- Введите/скопируйте/вставьте: sudo apt-get install libglew1.5-dev libglm-dev