GLXCREATECONTEXT

名前
glXCreateContext - GLX レンダリングコンテクストを新しく作る

書式
GLXContext glXCreateContext( Display *dpy,
	XVisualInfo *vis,
	GLXContext shareList,
	Bool direct )

引き数

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

vis レンダリングコンテクストが利用可能なフレームバッファリソースを定義する ビジュアルを指定する。 これは XVisualInfo 構造体へのポインタであり、ビジュアルの ID や Visual へのポインタではない。

shareList
    ディスプレイリストを共有するコンテクストを指定する。 NULL は、全く共有を行わないことを示す。

direct
    レンダリングをグラフィックスシステムとの直接接続で行う(True)か、 あるいは X サーバ経由で行うか(False)を指定する。

説明
glXCreateContext は GLX のレンダリングコンテクストを生成し、その ハンドルを返す。 このコンテクストを用いて、ウィンドウと GLX ピックスマップの両方に描画 を行うことができる。 glXCreateContext がレンダリングコンテクストの生成に失敗すると、 NULL が返される。

direct が True の場合、実装が直接レンダリングをサポートし ており、X サーバへの接続がローカルであり、直接レンダリングコンテクスト が利用可能であれば、直接レンダリングコンテクストが生成される (direct が True の時も、実装は間接コンテクストを返すかもし れない)。 direct が False ならば必ず、X サーバ経由でレンダリングを行 うコンテクストが生成される。 実装によっては、直接レンダリングの方が高性能である。 しかし、直接レンダリングコンテクストは複数プロセスで共有できない。また、 GLX ピックスマップをレンダリングできないことがある。

shareList が NULL でなければ、全てのディスプレイリストのイ ンデックスと定義は、shareList のコンテクストと新しく生成されるコ ンテクストによって共有される。 1 つのディスプレイリスト空間で、任意の数のコンテクストを共有することが できる。 しかし、1 つのディスプレイリスト空間を共有する全てのレンダリングコンテ クストは、同じアドレス空間内に存在しなければならない。 2 つのレンダリングコンテクストがアドレス空間を共有するのは、 両方が同じサーバを使う間接コンテクストである場合か、 両方が直接コンテクストであり、単一のプロセスに所有されている場合である。 間接コンテクストの場合には、呼び出しを行うスレッドがアドレス空間を共有 する必要はない。必要なのは、これらに対応するレンダリングコンテクストが アドレス空間を共有することだけである。

GL のバージョンが 1.1 以降ならば、オブジェクト 0 を除く全てのテクスチャ オブジェクトは、ディスプレイリストを共有する任意のコンテクストによって 共有される。

注意
XVisualInfo は Xutil.h において定義されている。 これは visual, visualID, screen, depth 要素を 持つ構造体である。

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

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

直接レンダリングコンテクストを持つ GLX ピックスマップをレンダリングす ることはできないかもしれない。

エラー
クライアント側で実行が失敗すると NULL が返される。

生成されるコンテクストが、shareList によって指定されたコンテクス トとアドレス空間やスクリーンを共有していない場合、BadMatch が生 成される。

vis が有効なビジュアルでない場合には、BadValue が生成され る(例えば、特定の GLX の実装はこれをサポートしていない)。

shareList が GLX コンテクストでなく、NULL でもない場合には、 GLXBadContext が生成される。

サーバが新しいコンテクストを割り当てるために十分なリソースを持っていな い場合、BadAlloc が生成される。

関連項目
glXDestroyContext, glXGetConfig, glXIsDirect, glXMakeCurrent