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