最小限のコードでウィンドウレスOpenGLコンテキストを初期化するにはどうすればよいですか?
ウィンドウレスコンテキストを作成するために使用できることをここで読みましたが、そのwglCreateContextAttribsARB
方法は説明されていませんか?
リンクから:
オフスクリーンレンダリング用に、ウィンドウなしでコンテキストを作成します。これは実際には機能しない可能性があります。
その2番目の文は重要です。WGL_ARB_create_context仕様から:
4)同時に描画可能なウィンドウシステムにバインドせずにコンテキストを最新にする方法はありますか?
解決済み:はい。ただし、OpenGL3.0以降でのみ使用できます。これにより、無効なデフォルトのフレームバッファを持つコンテキストが生成されます。その意味は、OpenGL3.0仕様で定義されています。
注:Windowsでは、opengl32.dllはdrawable引数を使用してドライバーの名前空間を識別するため、回避できない場合があります。
この仕様では、デバイスコンテキストに設定したピクセル形式が必要なため、ウィンドウなしでコンテキストを作成することはできません。ただし、理論的には、コンテキストを最新にするときにHDCにNULLを渡すことができます。これにより、OpenGLにデフォルトのフレームバッファがなくなります。
ただし、上記のように、これは実際には機能しない場合があります。何が起こるか試してみることができますが、私は期待を裏切らないでしょう。
オフスクリーンレンダリングを実装する通常の方法は次のとおりです。
もう1つのオプションは、通常のOpenGLウィンドウを作成するフレームバッファオブジェクト(FBO)を使用することですが、メインフレームバッファにレンダリングする代わりに、フレームバッファオブジェクトバッファにレンダリングし、OpenGLウィンドウを非表示にします。
別のもの:
HDC hdc = CreateDC(L"DISPLAY",NULL,NULL,NULL);
しかし ReleaseDC
、それでは動作しません。DeleteDCは動作します。