2016-05-24 2 views
1

hRCを作成し、hRCを複数のhDCに設定してwglMakeCurrent()を使用できますか?私は、すべてのウィンドウに独自のhRCとhDCが必要であることを発見しました。それでは、どのようにして同じコンテキストを別のウィンドウに配置できますか?1つのhRCを複数のhDCに設定できますか?

答えて

4

hRCを作成し、hRCを複数のhDCに設定することができますか?

はい。 1つの特定のスレッドで特定の時刻に1つの特定のHDCにHGLRCを設定できますが、いつでも切り替えることができます。また、同じHDC上に任意の数のHLGLRCを作成し、それぞれ別のスレッドに入れることもできます。

唯一の制約は、HGLRCとHDCを互いに最新にする必要があることです。そのHGLRCとHDCは、ピクセル形式で互換性がなければなりません。

私は、すべてのウィンドウが正しくない独自のHRCとのhDC

を持つべきであることがわかりました。また、任意のウィンドウには任意の数のHDCがある場合があります。

次に、どのように同じコンテキストを別のウィンドウに配置できますか?

新しいHGLRC-HDCの組み合わせでwglMakeCurrentを呼び出して、呼び出しを行っているスレッドで最新のものを作成します。

+0

ですが、私は、hDCnd(hWnd)を使用してhDCndからhDCを取得し、wglCreateContext(hDC)を使用してhGLRCを取得します。 3人の間に関係はありませんか?現在のhDCから作成したhGLRCは、同じピクセルフォーマットの別のhDCで使用できます。 –

+0

@whiack:いいえ、wglCreateContextに渡されたDCは、GLRCが設定されている(DCの)ピクセル形式を照会するためにのみ使用されます。それだけです、それらの間に紐が付いていません。はい、1つのDCで作成されたGLRCは、同じピクセルフォーマットに設定されたまったく異なるDC(別のウィンドウからでも)で使用できます。 wglCreateContextリファレンスから: "* wglCreateContext関数は、hdcで参照されるデバイスで描画するのに適した新しいOpenGLレンダリングコンテキストを作成します。__レンダリングコンテキストは、デバイスコンテキストと同じピクセルフォーマットです。*" – datenwolf

+0

ありがとう答え、それは非常に明確です –