問題タブ [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 投票する
2 に答える
2611 参照

winapi - 単一のオブジェクトを視覚化するためにOpenGLシーンを適切に設定する方法

メッシュツールキット用の簡単なビジュアライザーを作成する必要があります。作業しているオブジェクトは常に[-1,1]^3ボックス(両端を含む)内にあるため、オブジェクトがユーザーに完全に表示されるようにする必要があります。また、ユーザーがオブジェクトの周りを「飛んでいる」ように、オブジェクトの周りでカメラを回転させる可能性も必要です。

それが私がこれをしている方法です:

Reshape関数は初期設定中に呼び出され、ビジュアライザーコントロールのサイズを変更するたびに、3の平方根よりも大きい角度と距離でPolarView関数が再描画ごとに呼び出されます(本当に重要ですか?)。このコードは、立方体や球体などの凸型オブジェクトでは正常に機能しますが、トーラスオブジェクトでは問題が発生するため(一部の面が他の面から見える)、深度テストに関するものだと思います。セットアップの何が問題になっていますか?スクリーンショット: インターネットで検索したところ、近距離平面と遠距離平面のパラメーターに問題がある場合に、このような問題が発生する可能性があることがわかりました。私の場合、これらの正しい値は何ですか?私の描画手順は次のようになります。
悪いトーラス
悪いトーラスがいっぱい

私のPIXELFORMATDESCRIPTOR:


私はこれを回避するいくつかの方法を見つけました:

  • 近くの飛行機と遠くの飛行機の値を入れ替える
  • [OK]に設定glDepthFuncするGL_GREATERと 、エラーが偶数個でもコードは正常に機能します。しかし、最初のエラーはどこにありますか?glClearDepth0
0 投票する
1 に答える
1935 参照

opengl - WGL: ダブルバッファリングなし + マルチサンプリング = FAIL?

私は通常、これらの引数を使用してピクセル形式を作成しwglChoosePixelFormatARB()ます (特に):

つまり、ダブル バッファリングと x4 マルチサンプリングです。これはうまくいきます。
しかし、ダブルバッファリングをオフにしようとすると:

への呼び出しがwglChoosePixelFormatARB()失敗します (または、何も作成されなかったことを示します)
マルチサンプリングを効果的にオフにすると:

また元気に働いています。

非ダブルバッファピクセルフォーマットがマルチサンプリングで動作するのを妨げる固有のものはありますか?

ダブル バッファリングをオフにする理由は、制約のないフレーム レートを実現するためです。ダブル バッファリングを使用すると、フレーム レートは最大 60 FPS になります (このラップトップ LCD は 60 Hz で動作します)。しかし、ダブル バッファリングをオフにすると、最大 1500 FPS を得ることができます。ダブルバッファリングをオンにしてこれを達成する方法はありますか?

0 投票する
1 に答える
1172 参照

c++ - MFC/C++ で動作するように GLUT 呼び出しを変更する

OpenGL レンダリングに GLUT を使用するプログラムがあります。別のプログラム コンポーネントと連携できるように、MFC プロジェクト内に配置する必要があります。

私はこのチュートリアルに従いました: http://www.codeguru.com/cpp/gm/opengl/openfaq/article.php/c10975__1/Setting-Up-OpenGL-in-an-MFC-Control.htm

タイマーが起動したときに GLUT 表示コールバックであった関数を呼び出していますが、GLUT アイドル コールバックで発生する何かにレンダリングが依存しているため、機能していません。MFC プログラムで GLUT アイドル コールバックを呼び出す場所がわかりません。そのために作成する必要がある別のイベント ハンドラーはありますか? もしそうなら、どのイベントですか? それとも、私は何か他のことを完全に間違っていますか? 私は OpenGL にかなり精通していますが、これが MFC の最初の経験であるため、おそらくその側で誤りを犯しています。

お時間をいただきありがとうございます。ほんとうにありがとう!

0 投票する
2 に答える
1089 参照

winapi - Windows での OpenGL/Cuda 相互運用のセットアップ

Cuda 3.2 でいくつかの作業を行い、OpenGL でいくつかの作業を行う必要がある DLL を作成しています。OpenGL は、私の Cuda コードが読み込んで変更する必要があるいくつかのグレースケール イメージをレンダリングし、OpenGL にテクスチャとして返します。そのためには PBO を作成する必要があると思います。私は以前にいくつかの基本的な OpenGL の作業を行ったことがありますが、拡張機能を使用したことはありません。それが私の問題です。コード。私が試したサンプルはどれも機能しません (GTX470 である私の vid カードはそれをサポートすると確信しています)

具体的な質問:
1. nvidia opengl sdk をインストールしました。拡張機能にアクセスするには、glew.h と wglew.h を使用する必要がありますか?
2. 私の DLL には UI がありません。非表示のウィンドウを作成する必要がありますか?それとも、オフスクリーン レンダリング コンテキストを作成する簡単な方法はありますか?
3. GL_RED_8UI フォーマットを使用してグレースケール PBO を作成できますか? cuda と gl の両方がそれに満足するでしょうか? cuda プログラミング マニュアルの opengl 相互運用セクションを読んだところ、GL_RGBA_8UI は OpenGL 3.0 の機能であるため、ピクセル シェーダーでのみ使用できると書かれていましたが、それが 1 チャネル フォーマットに適用されるかどうかはわかりませんでした。1 チャンネルのフロートも私の目的には機能します。
4. これはかなり簡単にできると思っていましたが、本当に何百行ものコードが必要ですか?

編集:
HBITMAP にアタッチされた OpenGL コンテキストを作成するコードがあります。ビットマップ レンダリング コンテキストを作成してから、それに PBO をアタッチする必要がありますか? それとも、CPU メモリにもレンダリングすることで速度が低下しますか? 見えないウィンドウを作成し、それに PBO をアタッチする方がよいでしょうか? また、PBO のピクセル形式はウィンドウ/ビットマップと一致する必要がありますか? 寸法はどうですか?

ありがとう、
アレックス

0 投票する
3 に答える
3950 参照

c++ - 最小限のウィンドウレスOpenGLコンテキストの初期化

最小限のコードでウィンドウレスOpenGLコンテキストを初期化するにはどうすればよいですか?

ウィンドウレスコンテキストを作成するために使用できることをここで読みましたが、そのwglCreateContextAttribsARB方法は説明されていませんか?

0 投票する
1 に答える
578 参照

windows - MinGWでWGLを見つける

私はウィンドウを作成する適切な小さなプログラムをCで作成しました。ただし、OpenGLレンダリングコンテキストとさまざまな関数を追加するのに問題があります。

GetDC、ChoosePixelFormat、SetPixelFormat-私が理解しているように、すべてのwgl関数。これらはVisualC++に固有のものである可能性があると思いましたが、C ++のみに根本的に変更されていない限り、そうではないようです。MinGWと比較して、エラーの量は驚くべきものです。

WGLはどこにありますか?どうすればMinGWに追加できますか?

(わずかに関連するソースコードはここにあります:http://pastebin.com/eMWLqL6h

0 投票する
1 に答える
539 参照

windows - wglCreateContextAttribsARB がクラッシュする

私のアプリケーションでは、wglCreateContextAttribsARB を 128 回作成しようとするとクラッシュします。常に 128 回目で、常に同じ引数を渡し、常に 0x2095(ERROR_INVALID_VERSION_ARB) を返します。最初の 127 回は動作するという事実から、これが有効なバージョンであることはわかっています。

この関数呼び出しがこの特定の番号で失敗する理由はありますか?

0 投票する
1 に答える
243 参照

opengl - MinGW の WGL バグ

MinGW の wgext.h に問題があります。Visual Studio のバージョンが機能していません (コンパイラが定義の欠落について叫びます)。

だから私はmesa-devを使ってMinGWでコンパイルしようとしました - そして私はバグを取得します

これを解決する方法はありますか?

0 投票する
1 に答える
1059 参照

macos - CGLFlushDrawable がバック バッファーに対して行っていることを特定する方法はありますか?

Appleのドキュメントによると、CGLFlushDrawableまたはそれと同等のCocoaflushBufferは、いくつかの異なる方法で動作する可能性があります。通常、ウィンドウ化されたアプリケーションの場合、バック バッファーの内容は、次のように可視バッファーにコピーされます

CGLFlushDrawable

ダブル バッファリングされたコンテキストのバック バッファをフロント バッファにコピーします。

描画バッファの内容はそのまま残されていると思います (質問 1. を参照)。私が間違っていても、kCGLPFABackingStore属性を に渡すことで保証できますCGLChoosePixelFormat

しかし、さらに読むと、状況によっては、コピーが実行されるのではなく、バッファーがスワップされる可能性があることがわかります。

バッキング ストア属性が false に設定されている場合、バッファはコピーではなく交換できます。これは、フルスクリーン モードの場合によく発生します。

また、これは述べています

フルスクリーン ウィンドウの上にコンテンツがない場合、Mac OS X は自動的にこのコンテキストのパフォーマンスを最適化しようとします。たとえば、アプリケーションがオブジェクトを呼び出すflushBufferNSOpenGLContext、システムはバック バッファーの内容をフロント バッファーにコピーするのではなく、バッファーをスワップする場合があります。(...) システムはバッファーをコピーするのではなくスワップすることを選択する場合があるため、アプリケーションは を呼び出すたびにシーンを完全に再描画する必要がありますflushBuffer

そして、ここに私の質問があります:

  1. バック バッファがコピーされた場合、バッキング ストア属性がなくても内容が保持されることが保証されますか?
  2. バッファがスワップされた場合、バック バッファはフロント バッファの内容を取得しますか、それとも定義されていないため、ランダムなものを取得することもできますか?
  3. システムバッファのスワップを選択する場合がありますが、実際にスワップを選択したかどうかを判断する方法はあり ますか?
  4. これらの場合のいずれかで、バッファが保持されているか、フロントバッファと交換されているか、またはめちゃくちゃになったかを判断する方法はありますか?

また、WGL、GLX、または EGL でどのように作成されているかについての情報もいただければ幸いです。特に質問 4 の回答が必要です。

0 投票する
1 に答える
365 参照

windows - Windows DCとGLRCは何に対応していますか?

DCはWindowsで何に対応しますか?HWNDまたはHMONITORからHDCを入手できることは知っています。これは、ウィンドウのDCがモニターのDCのエイリアスまたはプロキシであることを意味しますか?Windowsでは、ウィンドウクラスに独自のDCが必要であると言うことができるため、同じDCではないように見えますが、WindowsAPIはDC間の親子関係もサポートしているようです。モニターのDCが親DCの1つであることがわかりますか?

ウィンドウが複数のモニターにまたがる場合はどうなりますか?Windows APIは、ウィンドウから単一のHDCを取得し、HDCから単一のHGLRCを取得することのみをサポートしているようです。OpenGLは、フルスクリーンウィンドウが複数のモニターにまたがることをサポートしていないため、これを実現するには複数のウィンドウが必要であることを読みました。

SLI / Crossfireシステムは単一のGLRCになりますか?

GLRCは、グラフィックシステムに最もよく似ているように思えます。GLRCは、単一のグラフィックシステムを表します。DCは出力を表します。GLRCは、グラフィックシステムに接続された出力に関連付けられている任意のDCと、それらのDCの任意の子DCに描画できます。また、複数のモニターと複数のグラフィックカードを使用して、それぞれをペアにして、各GLRCを各DCとペアにすることもできます。

訂正または確認しますか?