次の方法で共有


wglMakeCurrent 関数 (wingdi.h)

wglMakeCurrent 関数は、指定された OpenGL レンダリング コンテキストを呼び出し元スレッドの現在のレンダリング コンテキストにします。 スレッドによって後続の OpenGL 呼び出しはすべて、 hdc によって識別されるデバイスに描画されます。 また、wglMakeCurrent を使用して、呼び出し元のスレッドの現在のレンダリング コンテキストを変更して、現在の状態を解除することもできます。

構文

BOOL wglMakeCurrent(
  HDC   unnamedParam1,
  HGLRC unnamedParam2
);

パラメーター

unnamedParam1

デバイス コンテキストを識別するハンドル。 呼び出し元スレッドによって行われた後続の OpenGL 呼び出しは、 hdc によって識別されるデバイスに描画されます。

unnamedParam2

関数が呼び出し元スレッドのレンダリング コンテキストとして設定する OpenGL レンダリング コンテキストを処理します。

hglrcNULL の場合、関数は呼び出し元のスレッドの現在のレンダリング コンテキストを現在の状態にしなくなり、レンダリング コンテキストで使用されるデバイス コンテキストを解放します。 この場合、 hdc は無視されます。

戻り値

wglMakeCurrent 関数が成功すると、戻り値は TRUE になります。それ以外の場合、戻り値は FALSE です。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

hdc パラメーターは、OpenGL でサポートされている描画サーフェイスを参照する必要があります。 hglrc の作成時に wglCreateContext に渡されたものと同じ hdc である必要はありませんが、同じデバイス上にあり、同じピクセル形式である必要があります。 hdc での GDI 変換とクリッピングは、レンダリング コンテキストではサポートされていません。 現在のレンダリング コンテキストでは、レンダリング コンテキストが最新でなくなるまで hdc デバイス コンテキストが使用されます。

OpenGL は、新しいレンダリング コンテキストに切り替える前に、現在のレンダリング コンテキストを呼び出し元のスレッドにフラッシュします。

スレッドには、現在のレンダリング コンテキストを 1 つ含めることができます。 プロセスは、マルチスレッドを使用して複数のレンダリング コンテキストを持つことができます。 スレッドは、OpenGL 関数を呼び出す前に、現在のレンダリング コンテキストを設定する必要があります。 それ以外の場合、すべての OpenGL 呼び出しは無視されます。

レンダリング コンテキストは、一度に 1 つのスレッドに対してのみ最新の状態にすることができます。 レンダリング コンテキストを複数のスレッドに最新の状態にすることはできません。

アプリケーションは、異なるレンダリング コンテキストを異なるスレッドに最新の状態にし、各スレッドに独自のレンダリング コンテキストとデバイス コンテキストを提供することで、マルチスレッド描画を実行できます。

エラーが発生した場合、 wglMakeCurrent 関数は、返す前にスレッドの現在のレンダリング コンテキストを最新の状態にしません。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー wingdi.h
Library Opengl32.lib
[DLL] Opengl32.dll

関連項目

Windows 上の OpenGL

WGL 関数

wglCreateContext

wglDeleteContext

wglGetCurrentContext

wglGetCurrentDC