問題タブ [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.
opengl - LoadLibrary と GetProcAddress が使用されている場合でも、ChoosePixelFormat がクラッシュする
1 台のコンピューターで、OpenGL の初期化中にアプリがクラッシュします。特に、ChoosePixelFormat を呼び出します。私はこれを見つけました:
C# の wglCreateContext は失敗するが、マネージ C++ では失敗しない
アプリの開始時に (DC 関数の前に) GL 関数を呼び出しても、まったく役に立ちませんでした。そのため、opengl32.dll を手動でロードし、wglChoosePixelFormat ポインターを取得しました。機能していたコンピューターでは引き続き機能しますが、その特定のコンピューターの問題はまったく解決しませんでした。
何か案は? 記録のために、そのコンピューターは Win7 64 上にあります。私はそれにアクセスできませんが、どの GPU を搭載しているかをその人に教えてもらいます。OK、コンピュータは ATI Mobility Radeon HD 5650 を搭載した ACER Aspire 7740 です
c++ - wglCreateContextAttribsARB は、対応するハードウェアで NULL を返します
Windows マシンで OpenGL 4.0 コンテキストを作成するプログラムがあります。このコードは、自分のコンピューターでは機能しますが、友人のコンピューターでは機能しません。 wglCreateContextAttribsARB
私の友人の Nvidia カードは OpenGL 4.4 をサポートしており、下位互換性のあるコンテキストを返すことができるはずですが、NULL を返します。他のすべての呼び出しは期待どおりに機能します。
これはコンテキスト作成コードです:
別の人が同様の問題を抱えており、この質問をここに投稿しました。しかし、彼らの問題を解決したことは、私の問題を解決することではありません。私は完全に困惑しています。
windows - WGL の潜在的な誤用、glDrawArrays でのクラッシュ
以下のコードは、ウィンドウを作成し、wglGetProcAddress を使用していくつかの OpenGL プロシージャをロードし、緑色の背景の中央に赤い四角を描画します。私のマシンではプログラムは正常に動作しますが、友人のラップトップでは xglDrawArrays() の呼び出しでクラッシュし、関数が 0x00000000 を逆参照しようとしたという苦情が表示されました。デバッガーで確認したように、友人のマシンでは xglDrawArrays ポインター自体が NULL ではないことに注意してください。エラーは xglDrawArrays が NULL であることが原因ではなく、xglDrawArrays が内部で NULL データにアクセスすることが原因であることをもう一度強調します。
さて、最も奇妙なことは、彼のマシンで「xglDrawArrays」を「glDrawArrays」に変更すると、コードが突然機能したことです。これは、エラーが WGL の誤用によるものではないかと疑っています。
関連する頂点シェーダーとフラグメント シェーダーは非常に単純です。
関連するコードは次のとおりです。
最後に、使用した glext.h ファイルは次のとおりです。glxext.h
windows - Windows での OpenGL 1.0 および 1.1 関数ポインター
Windows での OpenGL 1.0 および 1.1 の関数ポインタの性質について少し混乱しています。私はそれを理解していると思いますが、100% 確信があるわけではないので、誰かが私の現在の理解を確認またはコメントできることを願っています:
現時点での私の理解では、 で 1.2+ 関数をロードすることになっていますwglGetProcAddress()
が、その 1.0 および 1.1 関数は でロードする必要がありGetProcAddress()
ますopengl32.dll
。ただし、私の注意を引くのは、現在のコンテキストwglGetProcAddress()
に応じて異なる関数ポインターを返すと思われることです。HGLRC
しかし、おそらく 1.0 と 1.1 のポインターGetProcAddress()
は常に同じです。この行動の不一致は異常に感じます。
では、複数のHGLRC
オブジェクトがある状況があるとしましょう。それらA
を and と呼びますB
。を呼び出し、結果を 用とwglGetProcAddress()
用の別々のポインター プールに保持します。しかし、1.0 と 1.1 の関数をこれらのポインター プールにロードする必要もあります。この場合、 と のポインターは常に同じになるようです。A
B
A
B
驚いたことに、1.0 と 1.1 の関数は、OpenGL 呼び出しを現在の に関連付けられているドライバーにリダイレクトする薄いラッパーでなければなりませんHGLRC
。しかし、そのようなリダイレクト メカニズムが既に Windows に実装されwglGetProcAddress()
ている場合、コンテキスト依存のポインターを返す危険性が軽減されるため、なぜそれを使用できないのだろうかと思います。この問いに対する答えを知る必要は必ずしもないのですが、その問いの存在そのものが、そもそも私が物事を正しく理解しているかどうか疑問に思わせるものです。
c++ - WGL で GLEW を使用した OpenGL アンチエイリアス
私は OpenGL に比較的慣れていないので、C++ Win32 プロジェクトにアンチエイリアスを追加したいと考えています。現在、WM_CREATE メッセージが受信されたときにウィンドウ プロシージャでデバイス コンテキストを取得し、次のように、ピクセル フォーマット記述子を使用して OpenGL コンテキストを作成します。
アンチエイリアシングを機能させるには、WGL_ARB_multisample のような拡張機能を使用する必要があることを理解しています。特にGLEWで、これを実際に使用する方法の例はほとんどないようです。これを機能させるためにコードを変更するにはどうすればよいですか? ありがとう。
opengl - OpenGL EXTension が GLEW によって検出されませんか?
「 DirectStateAccess 」機能を使用していくつかのモジュールを作成しています。サポートされていない場合は、必要なものを作成しました。
お客様のラップトップで、OpenGL 3.3 コア プロファイル コンテキストを作成できました。への最初のコールでglGetString(GL_EXTENSIONS)
、GL_EXT_direct_state_access
が利用可能でした。
ただし、GLEW_EXT_direct_state_access 変数は間違いなく false です。ただし、 への後続の呼び出しwglGetProcAddress("glTextureParameteriEXT")
は null 以外の値を返します。そして、機能glTextureParameterxx()
も利用できるようです...
この時点で、GLEW 変数を使用して、拡張機能が実際にサポートされているかどうかを確認できるかどうか疑問に思います。
ところで、「有効な OpenGL コンテキストをアクティブ化」してテストを行いました...