問題タブ [wgl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
55 参照

windows - Windows 上の OpenGL ICD はどのように OpenGL 1.0 および 1.1 関数をロードしますか?

最近、Windows で OpenGL ランタイム (opengl32.dll) によって呼び出される OpenGL 関数を OpenGL グラフィックス ドライバー (ICD) がどのように実装するかについて調査を行っています。

GetProcAddressによって公開された OpenGL 1.0 および 1.1 関数の関数ポインタを取得するために を使用できることを理解しています。また、OpenGL 1.2+ 関数のコンテキスト依存の関数ポインタを取得するには、returnedopengl32.dllを呼び出す必要があることを理解しています。wglGetProcAddressGetProcAddress

ICD が OpenGL 関数を実行するかどうかを確認するために、opengl32.dll と ICD のラッパー プログラムを作成し、関数が呼び出されたときに関数名を出力できるようにしました。OpenGL 1.2+ 関数の場合、テスト プログラムが最初にwglGetProcAddressopengl32.dll から返された関数ポインタを呼び出し、次にDrvGetProcAddressICD から返された関数ポインタを呼び出しているのを見ました (これらの関数のいくつかに対してフック関数を書きました)。したがって、これらの機能がグラフィックス ドライバーによって実装されていることが証明されました。しかし、opengl32.dll によって API シンボルが公開されている OpenGL 1.0 および 1.1 関数の場合、 wglGetProcAddressopengl32.dll とDrvGetProcAddressICD の両方が関数名でそれらをロードしようとすると NULL を返します。

また、両方の GetProcAddress 関数が OpenGL 拡張 (OpenGL 1.2 以上) 関数の関数ポインターを取得するために使用されたことも理解していますが、グラフィック ドライバーが現在 OpenGL 1.0 および 1.1 関数を実装しているかどうかはわかりません。もしそうなら、ICD のこれらの関数は opengl32.dll によってどのように呼び出されますか?