OpenGL
wikipedia OpenGL から:
- OpenGL (Open Graphics Library) は、2D および 3D のベクターグラフィックスをレンダリングするための、クロスランゲージ、クロスプラットフォームのアプリケーションプログラミングインターフェース(API)です。
詳しくは、Khronos をご覧ください。
目次
インストール
OpenGL を使うアプリケーションを実行するには、あなたのハードウェア(GPU または CPU)用のドライバを インストール する必要があります。
- mesa はオープンソースの OpenGL 実装で、最新の OpenGL 仕様をサポートするために継続的に更新されています。Intel グラフィックス]]、ATI、AMD、AMD PRO および NVIDIA のためのオープンソースドライバが集められています。また、ソフトウェアラスタライザーも提供します。パッケージに含まれるドライバは以下の通りです。
i915
: GMA 916G および i830、i845、i865 統合 GPU シリーズ用です。i965
: Intel の Gen 4 ハードウェア以降に対応。インテルにより公式にサポートされています。iris
: Intel の Gen8 ハードウェア以降に対応。インテルにより公式にサポートされています。- AMD Radeon R100 GPU シリーズ用です。
- AMD Radeon R200 GPU シリーズ用。
- AMD Radeon R300, R400, R500 GPU シリーズ用。
- AMD Radeon HD 2000 GPU シリーズ以降に対応。AMD が公式にサポートしています。
radeonsi
: AMD の Southern Island GPU 以降のシリーズ用。AMD が公式にサポートしています。nouveau
: Nouveau は NVIDIA 用のオープンソースドライバです。GPU の場合。virgl
: 仮想マシン用にホストと GPU を共有するための仮想 GPU ドライバです。svga
: VMware の仮想 GPU 用です。zink
: Gallium ライバで、vulkan 上で OpenGL を動作させることができます。swrast
: レガシーソフトウェア rasterizer です。softpipe
: ソフトウェア rasterizer、リファレンス Gallium ドライバです。llvmpipe
: ソフトウェア rasterizer、x86 JIT コード生成に LLVM を使用し、マルチスレッド化されています。swr
: AVX および AVX2 CPU 命令を使用する高性能ソフトウェア rasterizer OpenSWR としても知られています。
- nvidia-utils は NVIDIA GPU 用のプロプライエタリドライバです。
- amdgpu-pro-libglAUR は AMD PRO GPU 用のプロプライエタリドライバです。
検証
OpenGL のインストールを確認するには、 mesa-utils glxinfo
を使用すると、次のような出力が得られるはずです。
$ glxinfo | grep OpenGL
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:
(もちろん、設定によって異なる値で)
同じパッケージから glxgears
も試せます。3つの歯車が回転しているのが見えるはずです。
Switching between drivers
For Hybrid graphics you might want to see PRIME.
Mesa
You can override used driver using the following environment variable:
MESA_LOADER_DRIVER_OVERRIDE=driver
By default mesa searches for drivers in /lib/dri/
you can see the list of drivers by
$ ls /lib/dri/
driver
is the name of the driver without _dri.so
. If it failed it will fallback to llvmpipe.
You can also use OpenGL software rasterizer drivers by setting the following environment variables:
LIBGL_ALWAYS_SOFTWARE=true GALLIUM_DRIVER=driver
driver
is one of softpipe
, llvmpipe
, or swr
.
OpenGL over Vulkan (Zink)
If you experience some issues (a bug in RadeonSI, Iris, etc.), you may try using Zink.
On AMD RX 6700 XT the FPS is 58-105% depending on a game compared to RadeonSI according to [1].
As of 2021-11-30, many applications do not work on NVIDIA GPUs even with the latest driver 495.44 and mesa-gitAUR's master branch. When paired with Copper DRI extension (not yet upstreamed), the average FPS in Tomb Raider is 20% higher on a RTX 2070.
$ env __GLX_VENDOR_LIBRARY_NAME=mesa MESA_LOADER_DRIVER_OVERRIDE=zink GALLIUM_DRIVER=zink %app%
Development
Using OpenGL in code requires functions loader, read more at Khronos.
OpenGL Hardware Database
GPUInfo provides user reported GPU/driver combinations, supported extensions, capabilities, etc.