実際、私は OpenGL が何であるかを完全には理解していません。
OpenGL 自体は、API の仕様にすぎません。つまり、呼び出すことができる関数のセット、特別な値とトークン、および各呼び出しの効果です。実装は、この仕様に従って、機能する OpenGL を提供します。
OpenGL は、3D 空間でのプリミティブの描画用に最適化されたラスタライズ描画 API です。つまり、3D 座標のストリームと描画モード (点、線、三角形など) を指定すると、OpenGL は 3D データを 2D 画面空間に変換し、キャンバス上にフラット プリミティブを描画します。OpenGL の最近のバージョンは厳密には 3D から 2D への変換ではなくなりましたが、いわゆるシェーダーが必要になりました。これは、任意の次元のジオメトリを 2D 画面空間に変換することを記述する小さなプログラムです。
追加機能は、描画時の追加データ ソースとしての画像データのサンプリングと補間 (テクスチャリング) です。
詳細: とにかく厳密には公式の OpenGL 実装ではない Mesa 3D を使用しようとしているようです。
なんで?Windows を使用している場合は、ランダムなライブラリではなく、GPU ドライバーによって提供される OpenGL 実装を使用する必要があります (ただし、Mesa3D は完全にランダムではありません)。
OpenGL は、実際にはインストールするライブラリではなく、GPU ドライバーによって提供される関数のセットです。GPU ドライバーが OpenGL を提供しない場合は、ソフトウェア ラスタライザーの実装を使用できます。
Mesa 3D は GPU も使用しますか?
依存します。Windows では、Mesa3D はソフトウェア ラスタライザーのみです。ただし、X.org (Linux、FreeBSD など) の場合、Mesa3D は GPU ドライバーのオープン ソース OpenGL フロントエンドであるため、X.org が Mesa3D が使用できるドライバーを使用するように構成されている場合、mesa を介して GPU アクセラレーションを取得できます。
別の実装ライブラリを入手する方法がわかりません。他に何があるのかもわかりません。(Mesa 3D は私の dev-cpp コンパイラで提供されました)
通常、OpenGL は GPU ドライバーの一部として入手します。Linux では、オープン ソースの GPU ドライバーをインストールすると、Mesa3D が自動的にインストールされます。しかし、クローズド ソース ドライバーもあり、それらはまったく異なるコードベースを使用しています。
これは非常に重要です。OpenGL 開発を行うために特別な OpenGL ライブラリは必要ありません。
通常、コンパイラには「opengl32.lib」が同梱されています (Windows の場合 – 他のプラットフォームでは、リンカーにシステム OpenGL にリンクするように指示するだけです)。ただし、これはリンカーの目次のようなものであり、実際の OpenGL 実装が提供するものです。
Windows では、システム opengl32.dll は OpenGL-1.1 のみをエクスポートします。これより上の機能には、より高いバージョンの機能をロードするための、いわゆる拡張メカニズムがあります。通常、 GLEWのようなライブラリ (この場合は実際のライブラリ) を介してこれを行います。