OpenGL (Русский) - ArchWiki

Jump to content

# OpenGL (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи OpenGL. Дата последней синхронизации: 30 июня 2025. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Из Википедии:

  OpenGL (Open Graphics Library) — спецификация, определяющая платформонезависимый (независимый от языка программирования) программный интерфейс для написания приложений, использующих двумерную и трёхмерную компьютерную графику.

Подробнее на сайте Khronos.

Разработка OpenGL прекращена в 2017 году. В качестве современной замены предлагается Vulkan — низкоуровневый API, позволяющий достичь более высокой производительности на современном оборудовании.

## Установка

Для работы OpenGL-приложений нужно установить драйвер, подходящий для вашего оборудования (видеокарты или процессора).

Совет

- Для AMD (и ATI) рекомендуется использовать открытые драйверы, если у вас нет веских причин использовать проприетарные.
- Для видеокарт NVIDIA поколений более новых чем Kepler (NVE0/GKXXX) рекомендуется использовать проприетарный драйвер, так как он имеет в целом более высокую производительность.

Примечание

- Обозначение графики Intel GenN опирается не на поколения процессоров, а на поколения 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-oglpAUR — проприетарный драйвер для графики 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.

Categories:

- Graphics (Русский)
- Development (Русский)

OpenGL (Русский)
Add topic