OpenGL (Русский)

Состояние перевода:
На этой странице представлен перевод статьи
OpenGL
. Дата последней синхронизации: 30 июня 2025. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
Из
Википедии
:
OpenGL (Open Graphics Library) — спецификация, определяющая платформонезависимый (независимый от языка программирования) программный интерфейс для написания приложений, использующих двумерную и трёхмерную компьютерную графику.
Подробнее на
сайте Khronos
.
Разработка OpenGL прекращена в 2017 году. В качестве современной замены предлагается
Vulkan
— низкоуровневый API, позволяющий достичь более высокой производительности на современном оборудовании.
Установка
Для работы OpenGL-приложений нужно
установить
драйвер, подходящий для вашего оборудования (видеокарты или процессора).
Совет
Для AMD (и ATI) рекомендуется использовать открытые драйверы, если у вас нет веских причин использовать проприетарные.
Для видеокарт NVIDIA поколений более новых чем
Kepler (NVE0/GK
XXX
)
рекомендуется использовать проприетарный драйвер, так как он имеет в целом более высокую производительность.
Примечание
Обозначение графики Intel Gen
N
опирается не на поколения процессоров, а на
поколения GPU
, которые не совпадают с поколениями процессоров.
Узнать семейство графики AMD (и ATI) можно на странице
Wikipedia:ru:Список графических процессоров AMD
.
Узнать архитектуру и семейство графики NVIDIA можно на
странице nouveau wiki с кодовыми именами
.
Mesa
— это реализация OpenGL с открытым исходным кодом, поддерживающая актуальную спецификацию OpenGL. Она содержит коллекцию открытых драйверов для графики
Intel
,
AMD
(ранее
ATI
) и
NVIDIA
. Mesa также предоставляет программные
растеризаторы
, такие как llvmpipe.
Есть два пакета с разными наборами драйверов Mesa:
mesa
содержит свежие драйверы для современного оборудования:
r300
: для графики AMD Radeon R300, R400 и R500.
r600
: для графики AMD Radeon от R600 до Northern Islands. Официально поддерживается компанией AMD.
radeonsi
: для графики AMD Southern Island и более новых. Официально поддерживается компанией AMD.
nouveau
:
Nouveau
— открытый драйвер для графики NVIDIA.
virtio_gpu
: драйвер virtio, который может использоваться в виртуальных машинах
QEMU
(вроде
KVM
или
Xen
).
vmwgfx
: для виртуальных машин
VMware
.
i915
: для графики Intel Gen 3.
crocus
: для графики Intel от Gen 4 до Gen 7.
iris
: для графики Intel Gen 8 и более новых. Официально поддерживается компанией Intel.
zink
: транслирует вызовы OpenGL в вызовы
Vulkan
.
d3d12
: OpenGL 3.3 для устройств, поддерживающих только D3D12 (то есть
WSL
).
softpipe
: программный растеризатор и эталонная реализация Gallium-драйвера.
llvmpipe
: программный растеризатор, который является многопоточным и использует LLVM для генерации JIT-кода x86.
mesa-amber
содержит старые (не Gallium3D) драйверы для старого оборудования:
i830
: для графики Intel Gen 2. Тот же файл, что и
i965
.
i915
: для графики Intel Gen 3. Тот же файл, что и
i965
.
i965
: для графики Intel от Gen 4 до Gen 11. Официально поддерживается компанией Intel.
radeon
: для графики AMD Radeon R100. Тот же файл, что и
r200
.
r200
: для графики AMD Radeon R200.
nouveau_vieux
: для графики NVIDIA от NV04 (Fahrenheit) до NV20 (Kelvin).
swrast
: устаревший программный растеризатор.
Примечание
При использовании Mesa правильный драйвер будет выбран автоматически; после установки пакета дополнительные настройки не требуются.
nvidia-utils
— проприетарный драйвер для графики
NVIDIA
, который предоставляет реализацию OpenGL.
amdgpu-pro-oglp
AUR
—
проприетарный драйвер
для графики AMD.
Проверка
Для проверки работоспособности OpenGL можно использовать команду
eglinfo
из пакета
mesa-utils
— она должна вывести что-то подобное:
$ eglinfo -B
Wayland platform:
EGL API version: 1.5
EGL vendor string: Mesa Project
EGL version string: 1.5
EGL client APIs: OpenGL OpenGL_ES
OpenGL core profile vendor: Intel
OpenGL core profile renderer: Mesa Intel(R) UHD Graphics (CML GT2)
OpenGL core profile version: 4.6 (Core Profile) Mesa 25.1.3-arch1.3
OpenGL core profile shading language version: 4.60
OpenGL compatibility profile vendor: Intel
OpenGL compatibility profile renderer: Mesa Intel(R) UHD Graphics (CML GT2)
OpenGL compatibility profile version: 4.6 (Compatibility Profile) Mesa 25.1.3-arch1.3
OpenGL compatibility profile shading language version: 4.60
OpenGL ES profile vendor: Intel
OpenGL ES profile renderer: Mesa Intel(R) UHD Graphics (CML GT2)
OpenGL ES profile version: OpenGL ES 3.2 Mesa 25.1.3-arch1.3
OpenGL ES profile shading language version: OpenGL ES GLSL ES 3.20

X11 platform:
EGL API version: 1.5
EGL vendor string: Mesa Project
EGL version string: 1.5
EGL client APIs: OpenGL OpenGL_ES
OpenGL core profile vendor: Intel
OpenGL core profile renderer: Mesa Intel(R) UHD Graphics (CML GT2)
OpenGL core profile version: 4.6 (Core Profile) Mesa 25.1.3-arch1.3
OpenGL core profile shading language version: 4.60
OpenGL compatibility profile vendor: Intel
OpenGL compatibility profile renderer: Mesa Intel(R) UHD Graphics (CML GT2)
OpenGL compatibility profile version: 4.6 (Compatibility Profile) Mesa 25.1.3-arch1.3
OpenGL compatibility profile shading language version: 4.60
OpenGL ES profile vendor: Intel
OpenGL ES profile renderer: Mesa Intel(R) UHD Graphics (CML GT2)
OpenGL ES profile version: OpenGL ES 3.2 Mesa 25.1.3-arch1.3
OpenGL ES profile shading language version: OpenGL ES GLSL ES 3.20
В X11 также можно использовать
glxinfo
.
Также для базового тестирования OpenGL можно использовать команды
eglgears_x11
или
glxgears
(для X11) или
eglgears_wayland
(для Wayland). После запуска одной из них должно появиться окно с тремя вращающимися шестерёнками.
Переключение между драйверами
При использовании
гибридной графики
смотрите статью
PRIME
.
Примечание
Согласно этому
сообщению на Reddit
, можно одновременно использовать две видеокарты от разных производителей с помощью PRIME без каких-либо проблем.
Mesa
Чтобы переопределить драйвер для определённого приложения, запустите его, указав название нужного драйвера в
переменной окружения
:
MESA_LOADER_DRIVER_OVERRIDE=
драйвер
По умолчанию Mesa ищет драйверы в
/lib/dri/
. Список доступных драйверов можно посмотреть командой:
$ ls /lib/dri/
Файлы в этом каталоге имеют имена вида
драйвер
_dri.so
, где
драйвер
это собственно название драйвера. Если Mesa не сможет найти нужный драйвер, будет использоваться
llvmpipe
.
Чтобы использовать программный растеризатор OpenGL, укажите следующие
переменные окружения
:
LIBGL_ALWAYS_SOFTWARE=true
GALLIUM_DRIVER=
драйвер
драйвер
может быть
softpipe
,
llvmpipe
или
swr
.
Совет
В большинстве случаев
llvmpipe
и
swr
быстрее чем
softpipe
.
OpenGL поверх Vulkan (Zink)
Из
документации Mesa
:
Zink — это Gallium-драйвер, который использует Vulkan API вместо того, чтобы ориентироваться на конкретную архитектуру GPU. С его помощью можно получить полную поддержку OpenGL на устройствах, поддерживающих только Vulkan.
Если вы испытываете проблемы с обычным драйвером OpenGL (например, баг в RadeonSI, Iris и т.д.), вместо него можно попробовать использовать Zink.
Согласно
этому бенчмарку Phoronix
, средняя частота кадров может быть ниже в некоторых приложениях по сравнению с RadeonSI.
Чтобы использовать Zink на проприетарном драйвере NVIDIA, используйте примерно такую команду:
$ env __GLX_VENDOR_LIBRARY_NAME=mesa __EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/50_mesa.json MESA_LOADER_DRIVER_OVERRIDE=zink GALLIUM_DRIVER=zink LIBGL_KOPPER_DRI2=1
приложение
Разработка
Примечание
Этот раздел предназначен для разработчиков, которые создают программы, использующие OpenGL. Обычным пользователям этот раздел не нужен.
Для использования OpenGL в коде требуется загрузчик функций, подробнее на
сайте Khronos
.
OpenGL Hardware Database
GPUInfo
предоставляет информацию о комбинациях видеокарт и драйверов, поддерживаемых расширениях, возможностях и т.д. Эта информация полезна для проверки совместимости / соответствия определённого оборудования как с OpenGL, так и с Vulkan.