3

opengl32 ライブラリがありません (詳細: mingw32 w64 missing OpenGL32 lib )。このライブラリに関連するいくつかの質問があります。

  1. opengl32 スタティック ライブラリ (.dll がある) が必要なのはなぜですか?
  2. ビデオ カード ベンダーがこのライブラリを提供しないのはなぜですか?
  3. 誰が提供する必要がありますか?
  4. opengl32 ライブラリのソースコードはありますか?
  5. opengl32 があるのに、(OpenGL のすべての機能を使用するために) GLEW またはその他の GL ライブラリの実装が必要なのはなぜですか? opengl32 が必要なすべての GL 実装を持つことができないのはなぜですか?
4

2 に答える 2

8

opengl32 スタティック ライブラリ (.dll がある) が必要なのはなぜですか?

リンカーのシンボル テーブルを提供します。シンボル テーブルは、ライブラリによって提供される関数をリンカに伝えます。これにより、リンカは、プログラムで使用されるシンボルをリンクされたライブラリに結び付ける方法を知ることができます。

Windows 以外の OS では、「DLL」もシンボル テーブルを提供することに注意してください。

ビデオ カード ベンダーがこのライブラリを提供しないのはなぜですか?

ライブラリはドライバ システムへの OS インターフェイスの一部であるため

誰が提供する必要がありますか?

DLL: OS ベンダー。シンボル テーブル ライブラリ: コンパイラ ベンダー。

opengl32 ライブラリのソースコードはありますか?

OpenGL 自体は単なる仕様です。コンピューター上にあるのは、実装とインターフェイスです。インターフェイスは OS の一部です。したがって、クローズド ソース OS では利用可能なソース コードはありませんが、オープン ソース OS では利用できます。

opengl32 があるのに、(OpenGL のすべての機能を使用するために) GLEW またはその他の GL ライブラリの実装が必要なのはなぜですか?

opengl32.dll は、ドライバー システムへの単なるインターフェイスです。このインターフェイスは、OpenGL 機能の最小の共通分母である必要があります。これにより、幅広い OpenGL バージョンと機能を共通インターフェイスを通じて提供できます。ただし、拡張メカニズムが存在する、より新しい最先端の機能にもアクセスできるようにする必要があります。

opengl32 が必要なすべての GL 実装を持つことができないのはなぜですか?

opengl32.dll はオペレーティング システムの一部であり、OS の一部である場合、OpenGL の新しいバージョンごとに OS の更新が必要になります。実際、これは MacOS X の状況です。

また、OpenGL の実装は、DLL ではなくドライバーの一部です。

于 2012-09-12T17:33:20.330 に答える
3
  1. 静的ライブラリではなく、DLL に動的にリンクするためのライブラリです。
  2. それは多かれ少なかれOSの一部だからです。OpenGL32.dll からエクスポートされたシンボルは、標準 (特定のgl...関数セット) および Microsoft 固有 (wgl少なくとも 1 つ) である傾向があります。公に知られているものは、ベンダー間で変わりません。
  3. Microsoft は、コンパイラと共に提供しています。ライブラリは多少コンパイラ固有のものになる可能性があるため、他のコンパイラベンダーも同様にすべきです。
  4. Mesa はオープンソースの OpenGL 実装であるため、最も近いものになります。
  5. そうではありません。文字列と関数ポインタを手動で取得できますが、非常に面倒です。GLEW et al は、ほとんどの機能チェックと初期化を行います。OpenGL32.dll で直接できることは何もありませんが、作業がずっと楽になります。
于 2012-09-12T17:32:29.130 に答える