0

Windows が一般的な OpenGL ドライバーを提供していることは誰もが知っています。ただし、一部のディスプレイ カード ベンダーは、特定の openGL ドライバーを提供しています。使用するドライバーをOSがどのように選択するのか疑問に思っています。

4

2 に答える 2

1

これがどのように機能するかを説明する最も簡単なプラットフォームは、Microsoft Windows です。Windows SDK が最小限の OpenGL 機能 (OpenGL 1.1) と拡張可能なウィンドウ システム インターフェイス (WGL) を提供する "Installable Client Driver" (ICD) モデルがあります。

Microsoft Windows で WGL API を使用してコンテキストを作成すると、特定のデバイスのすべてのピクセル フォーマットを列挙できます。一部のピクセル フォーマットはハードウェア アクセラレーションされ、一部はフォールバック ソフトウェア OpenGL 1.1 リファレンス実装を使用します。ハードウェア アクセラレーション形式を取得すると、すべての OpenGL コマンドがグラフィック カード ドライバーによって処理され、参照 (1.1) 実装では使用できない GL と WGL の両方に対する一連の拡張機能が得られます。

これが、最新の OpenGL の多くが Microsoft Windows で拡張機能をロードして処理する必要がある理由です。最低レベルでは OpenGL 1.1 しか取得できず、それよりも新しいものについては、必要な関数のアドレスをドライバーに問い合わせる必要があります。使用する。

多くのプラットフォームには、ハードウェアとソフトウェアの共存に関して同様のシステムがあります。Mac OS X はさらにトリッキーです。ハードウェア アクセラレーションされた OpenGL 実装から始めても、間違った関数 (インストールされた GPU のハードウェアに実装できない関数) を呼び出すことができ、「高速パス」から外れて、ソフトウェア。

ただし、Mac OS X の優れた点は、このフォールバックがパイプラインの個々のステージにのみ適用されることです。すべてがハードウェアに実装できる限り、次の段階ではハードウェア アクセラレーションに戻ります。美点は、OS X では、OpenGL のソフトウェア実装が完全であることです (たとえば、3.2 コンテキストは、部分的/完全なソフトウェア実装が必要な場合でも、OpenGL 3.2 機能セット全体をサポートします)。GPU が何かをサポートしていなくても、機能が失われることはありません。パフォーマンスが大幅に向上するだけです。これは、最新の OpenGL にソフトウェア フォールバックがないWindows とは大きく対照的です。

于 2013-08-17T18:22:21.930 に答える