Scroll to navigation

GLXCOPYCONTEXT() GLXCOPYCONTEXT()

名前

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