glXCopyContext -
あるレンダリングコンテクストから他のレンダリングコンテクストへ状態をコピーする
void
glXCopyContext( Display
*dpy,
GLXContext src,
GLXContext dst,
unsigned long mask )
引き数¶
- dpy
- X
サーバへの接続を指定。
- src
- コピー元のコンテクストを指定する。
- dst
- コピー先のコンテクストを指定する。
- mask
- src
が持っているどの状態を
dst
にコピーするかを指定する。
glXCopyContext
は、選択された状態変数のグループを
src から
dst
にコピーする。
mask
は、コピーする状態変数のグループを示す。
mask は、GL
のコマンドである
glPushAttrib に渡すのと同じ
シンボル名について,ビットごとの
OR
を取ったものである。
シンボル定数
GL_ALL_ATTRIB_BITS
を単独で使うと、レンダリング状態
のうち可能な限り多くの部分をコピーすることができる。
コピーが行われるのは、
src と
dst
で示されるレンダラが
アドレス空間を共有している場合だけである。
2
つのレンダリングコンテクストがアドレス空間を共有するのは、どちらの
レンダリングコンテクストも同じサーバを用いている間接コンテクストの場合
か、どちらも直接コンテクストであり、かつ
1
つのプロセスに所有されてい
る場合である。
間接コンテクストの場合には、呼び出しを行うスレッドがアドレス空間を共有
する必要はない。アドレス空間を共有する必要があるのは関連するレンダリング
コンテクストだけである。
GL
の状態を表す値は必ずしも全てがコピーできるわけではない。
例えば、ピクセルのパックやアンパックの状態、レンダリングモードの状態、
セレクションやフィードバックの状態はコピーされない。
コピーできる状態は、GL
のコマンド
glPushAttrib
で操作される状態と全く同じである。
呼び出しを行っているスレッドに対して
src
が現在のコンテクストで
あれば、
glXCopyContext
によって暗黙的に
glFlush が実行され る。
プロセス
は単一の実行環境である。これは単一のアドレス空間内にお
いて実行され、1
つ以上のスレッドで構成される。
スレッドは、1
つのアドレス空間を共有しているサブプロセスの集合の
1
つであるが、別々のプログラムカウンタ、スタック空間、その他の
関連グローバルデータを管理する。
ある
スレッドがサブプロセスグループの唯一のメンバーならば、これは
プロセスと等価である。
エラー¶
レンダリングコンテクスト
src と
dst
がアドレス空間を共有し
ていないか、同じスクリーンに対して生成されていなければ、
BadMatch が生成される。
glXCopyContext
が呼び出された際、(呼び出しを行ったスレッドを含め
て)いずれかのスレッドに対して
dst
が現在のコンテクストならば、
BadAccess が生成される。
src
が現在のコンテクストであり、かつ現在のドロウアブルがもはや
有効でないウィンドウならば、
GLXBadCurrentWindow
が生成される。
src または
dst が有効な
GLX
コンテクストでなければ
GLXBadContext が生成される。
関連項目¶
glPushAttrib,
glXCreateContext,
glXIsDirect