GLXMAKECURRENT

名前
glXMakeCurrent GLX コンテクストをウィンドウまたは GLX ピックスマップに割り当てる

書式
Bool glXMakeCurrent( Display *dpy,
	GLXDrawable drawable,
	GLXContext ctx )

引き数

dpy X サーバへの接続を指定する。

drawable
    GLX のドロウアブルを指定する。 X のウィンドウ ID か GLX のピックスマップ ID でなければならない。

ctx drawable に割り当てる GLX レンダリングコンテクストを指定する。

説明
glXMakeCurrent は 2 つの処理を行う: この関数は、呼び出しを行ったスレッドの現在の GLX コンテクストを ctx にし(現在のコンテクストが既にあれば、これと置き換える)、 ctx を GLX ドロウアブルに割り当てる。 これはウィンドウまたは GLX ピックスマップである。 この 2 つの動作の結果として、これ以降の GL のレンダリング関数はレンダ リングコンテクスト ctx を用いて GLX ドロウアブル drawable を書き換える。 glXMakeCurrent は現在のレンダリングコンテクストを ctx に必 ず置き換えるので、現在のコンテクストはスレッドごとに 1 つずつしか存在 できない。

前のコンテクストが存在する場合、これに対してペンディングされているコマ ンドは、コンテクストが解放される前にフラッシュされる。

初めて ctx を何らかのスレッドの現在のコンテクストにすると、その ビューポートは drawable の最大の大きさに設定される。 それ以降は、何らかのスレッドが ctx を使って glXMakeCurrent を呼び出しても、ビューポートには全く影響を与えない。

新しいコンテクストを割り当てることなく現在のコンテクストを解放するには、 drawable に None を、ctx に NULL を設定して glXMakeCurrent を呼び出すこと。

glXMakeCurrent は成功すると True を返し、失敗すると False を返す。 False が返されると、以前のレンダリングコンテクストとドロウアブル は(もし存在すれば)変わらずに残る。

注意
プロセス は単一の実行環境である。これは単一のアドレス空間内にお いて実行され、1 つ以上のスレッドで構成される。

スレッドは、1 つのアドレス空間を共有しているサブプロセスの集合の 1 つであるが、別々のプログラムカウンタ、スタック空間、その他の 関連グローバルデータを管理する。 あるスレッドがサブプロセスグループの唯一のメンバーならば、これは プロセスと等価である。

エラー
drawable が ctx と同じスクリーンおよびビジュアルを使って生 成されていなければ、BadMatch が生成される。 このエラーは、drawable が None なのに ctx が NULL でない場合にも生成される。

glXMakeCurrent が呼び出された時点で ctx が別のスレッドの 現在のコンテクストならば、BadAccess が生成される。

drawable が有効な GLX のドロウアブルでなければ、 GLXBadDrawable が生成される。

ctx が有効な GLX コンテクストでなければ、GLXBadContext が 生成される。

glBegin とこれに対応する glEnd が実行される間に glXMakeCurrent が実行されると、GLXBadContextState が生成さ れる。

呼び出しを行ったスレッドの現在のレンダリングコンテクストが、GL のレン ダラ状態として GL_FEEDBACK または GL_SELECT を持っている場 合にも、GLXBadContextState が生成される。

前のコンテクストに対してペンディングされている GL コマンドがあり、かつ 現在のドロウアブルが既に有効なウィンドウでなくなっている場合には、 GLXBadCurrentWindow が生成される。

glXMakeCurrent が呼び出されるまでにサーバが 補助バッファを割り当てられなかった場合、BadAlloc が生成されるこ とがあるが、割り当てを行うにはリソースが十分でなかったことしかわからな いかもしれない。

関連項目
glXCreateContext, glXCreateGLXPixmap