私のソフトウェアでは、Windowsにさまざまなピクセル形式を照会するためにダミーウィンドウを生成し、そのウィンドウを破棄して、適切な形式を選択した後に新しいウィンドウを作成しています。
最初のウィンドウを初期化した後、wglChoosePixelFormatARB関数を使用するためにglewInit()でglewを初期化します。ダミーウィンドウを破棄した後も拡張機能は機能し続けますが、理論的には2つのウィンドウが2つの異なる関数ポインターのセットを持つ可能性があるため、これは技術的に「正しい」ものではないことを認識しています。したがって、2番目のウィンドウを作成した後、もう一度glowを初期化します。
これを行うと、その後、次のような通常の関数からエラーが発生します。
GLint viewport[4];
::glGetIntegerv(GL_VIEWPORT, viewport);
、glErrorは1280です-奇妙なことに、ビューポートをチェックすると、正しい値が含まれているようです(前のコマンドでエラーが発生したかどうかを確認するためにglGetError()を調べています)。
だから、私の質問はこれです:Windowsに必要と思われる2つの状態のOpenGL初期化(ダミーウィンドウの作成、拡張機能の初期化、拡張機能の使用、ダミーウィンドウの破棄、実際のウィンドウの作成)で、新しいウィンドウが2回目に光ったとき、どのように初期化するのですか?ウィンドウは現在のコンテキストですか?