7

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

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

4

3 に答える 3

7

リンクから:

オフスクリーンレンダリング用に、ウィンドウなしでコンテキストを作成します。これは実際には機能しない可能性があります。

その2番目の文は重要です。WGL_ARB_create_context仕様から:

4)同時に描画可能なウィンドウシステムにバインドせずにコンテキストを最新にする方法はありますか?

解決済み:はい。ただし、OpenGL3.0以降でのみ使用できます。これにより、無効なデフォルトのフレームバッファを持つコンテキストが生成されます。その意味は、OpenGL3.0仕様で定義されています。

注:Windowsでは、opengl32.dllはdrawable引数を使用してドライバーの名前空間を識別するため、回避できない場合があります。

この仕様では、デバイスコンテキストに設定したピクセル形式が必要なため、ウィンドウなしでコンテキストを作成することはできません。ただし、理論的には、コンテキストを最新にするときにHDCにNULLを渡すことができます。これにより、OpenGLにデフォルトのフレームバッファがなくなります。

ただし、上記のように、これは実際には機能しない場合があります。何が起こるか試してみることができますが、私は期待を裏切らないでしょう。

于 2011-08-15T08:31:38.933 に答える
5

オフスクリーンレンダリングを実装する通常の方法は次のとおりです。

  1. 拡張機能にアクセスするためのダミーウィンドウ+OpenGLコンテキストを作成します
  2. PBufferを作成するための関数を取得します
  3. PBufferDCを作成する
  4. PBufferにOpenGLコンテキストを作成します
  5. ダミーウィンドウを破壊する

もう1つのオプションは、通常のOpenGLウィンドウを作成するフレームバッファオブジェクト(FBO)を使用することですが、メインフレームバッファにレンダリングする代わりに、フレームバッファオブジェクトバッファにレンダリングし、OpenGLウィンドウを非表示にします。

于 2011-08-15T18:04:44.077 に答える
-3

別のもの:

HDC  hdc = CreateDC(L"DISPLAY",NULL,NULL,NULL);

しかし ReleaseDC、それでは動作しません。DeleteDCは動作します。

于 2017-04-25T15:39:36.183 に答える