GLXCHOOSEVISUAL

名前
glXChooseVisual - 指定された属性にマッチするビジュアルを返す

書式
XVisualInfo* glXChooseVisual( Display *dpy,
	int screen,
	int *attribList )

引き数

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

screen
    スクリーン番号を指定する。

attribList
    真偽値である属性と、整数値を取る属性とその値のペアのリストを指定する。 リストの最後の属性は None でなければならない。

説明
glXChooseVisual は、最小値の指定に最もよく適合するビジュアルを表す XVisualInfo 構造体へのポインタを返す。 返されるビジュアルが持つ、真偽値を取る GLX 属性は指定された値にマッチ し、整数値を取る GLX 属性は指定された最小値以上の値となる。 他の属性が全て同じであれば、TrueColor ビジュアルは DirectColor ビジュアルよりも優先され、PseudoColor ビジュアルは StaticColor ビジュアルよりも優先される。 適合するビジュアルが存在しなければ NULL が返される。 この関数が返したデータを解放するには XFree を用いること。

真偽値を取る GLX 属性のデフォルト値は、GLX_USE_GL の場合を除いて 全て False である。 GLX_USE_GL のデフォルト値は True である。 整数値を取る全ての GLX 属性のデフォルト値は 0 である。 デフォルト指定は、attribList リストが含んでいる属性によって上書 きされる。 真偽値を取る属性が attribList に含まれていると、その値が True であるものとされる。 整数の属性値と列挙型の属性値の直後には、その属性に対応する希望の値また は最小値が置かれる。 このリストは None で終端しなければならない。

各種 GLX ビジュアル属性は以下のように解釈される:

GLX_USE_GL
    無視される。 GLX を使ってレンダリング可能なビジュアルだけが考慮される。

GLX_BUFFER_SIZE
    この後には、カラーインデックスバッファの希望サイズを示す負でない整数を 置かなければならない。 インデックスバッファは、少なくとも指定された大きさを超える、できるだけ 小さいサイズであることが望ましい。 GLX_RGBA が有効ならば、この属性は無視される。

GLX_LEVEL
    この後には、バッファレベルの指定を行う整数を置かなければならない。 この指定は厳密に守られる。 バッファレベル 0 は、ディスプレイのメインフレームバッファに対応する。 バッファレベル 1 は最初のオーバーレイフレームバッファであり、レベル 2 は 2 番目のオーバーレイフレームバッファである。それ以降も同様である。 負のバッファレベルはアンダーレイフレームバッファに対応する。

GLX_RGBA
    この指定があると、TrueColor ビジュアルと DirectColor ビジュアルだけが 考慮される。 指定がない場合には、PseudoColor ビジュアルと StaticColor ビジュアルだ けが考慮される。

GLX_DOUBLEBUFFER
    この指定があると、ダブルバッファのビジュアルだけが考慮される。 指定がない場合には、シングルバッファのビジュアルだけが考慮される。

GLX_STEREO
    この指定があると、ステレオのビジュアルだけが考慮される。 指定がない場合には、モノスコープのビジュアルだけが考慮される。

GLX_AUX_BUFFERS
    この後には、希望する補助バッファの数を示す負でない整数を置かなければな らない。 ビジュアルが持つ補助バッファの数は、指定された数を超え、できるだけ小さ い値であることが望ましい。

GLX_RED_SIZE
    この後には、負でない最小サイズの指定を置かなければならない。 この値が 0 ならば、Red バッファの大きさは利用可能な最小値であることが 望ましい。 それ以外の場合には、少なくとも最小サイズを超え、できるだけ大きい値であ ることが望ましい。

GLX_GREEN_SIZE
    この後には、負でない最小サイズの指定を置かなければならない。 この値が 0 ならば、Green バッファの大きさは利用可能な最小値であることが それ以外の場合には、少なくとも最小サイズを超え、できるだけ大きい値であ ることが望ましい。

GLX_BLUE_SIZE
    この後には、負でない最小サイズの指定を置かなければならない。 この値が 0 ならば、Blue バッファの大きさは利用可能な最小値であることが 望ましい。 それ以外の場合には、少なくとも最小サイズを超え、できるだけ大きい値であ ることが望ましい。

GLX_ALPHA_SIZE
    この後には、負でない最小サイズの指定を置かなければならない。 この値が 0 ならば、アルファバッファの大きさは利用可能な最小値であるこ とが望ましい。 それ以外の場合には、少なくとも最小サイズを超え、できるだけ大きい値であ ることが望ましい。

GLX_DEPTH_SIZE
    この後には、負でない最小サイズの指定を置かなければならない。 この値が 0 ならば、ビジュアルはデプスバッファを持たないことが望ましい。 それ以外の場合には、少なくとも最小サイズを超え、できるだけ大きな デプスバッファを持つことが望ましい。

GLX_STENCIL_SIZE
    この後には、欲しいステンシルビットプレーンの数を示す負でない整数を置か なければならない。 ステンシルバッファは、少なくとも指定されたサイズを超えるが、できるだけ 少ないことが望ましい。 指定された値が 0 ならば、ビジュアルはステンシルバッファを持たないこと が望ましい。

GLX_ACCUM_RED_SIZE
    この後には、負でない最小値の指定を置かなければならない。 この値が 0 ならば、ビジュアルは Red アキュームレーションバッファを持た ないことが望ましい。 それ以外の場合には、少なくとも最小値を超え、できるだけ大きな Red アキュームレーションバッファを持つことが望ましい。

GLX_ACCUM_GREEN_SIZE
    この後には、負でない最小値の指定を置かなければならない。 この値が 0 ならば、ビジュアルは Green アキュームレーションバッファを持た ないことが望ましい。 それ以外の場合には、少なくとも最小値を超え、できるだけ大きな Green アキュームレーションバッファを持つことが望ましい。

GLX_ACCUM_BLUE_SIZE
    この後には、負でない最小値の指定を置かなければならない。 この値が 0 ならば、ビジュアルは Blue アキュームレーションバッファを持た ないことが望ましい。 それ以外の場合には、少なくとも最小値を超え、できるだけ大きな Blue アキュームレーションバッファを持つことが望ましい。

GLX_ACCUM_ALPHA_SIZE
    この後には、負でない最小値の指定を置かなければならない。 この値が 0 ならば、ビジュアルはアルファアキュームレーションバッファを持た ないことが望ましい。 それ以外の場合には、少なくとも最小値を超え、できるだけ大きな アルファアキュームレーションバッファを持つことが望ましい。

例

attribList =
    {GLX_RGBA, GLX_RED_SIZE, 4, GLX_GREEN_SIZE, 4, GLX_BLUE_SIZE, 4, None};

この例では、通常のフレームバッファ(オーバーレイバッファでも アンダーレイバッファでもない)におけるシングルバッファの RGB ビジュアル を指定している。 返されるビジュアルは Red, Green, Blue それぞれについて最低 4 ビットを サポートしており、アルファのビットは多分持たないだろう。 カラーインデックスモード、ダブルバッファリングモード、ステレオ表示はサ ポートしない。 1 つのデプスバッファ、ステンシルバッファ、アキュームレーションバッファや 1 つ以上の補助カラーバッファは、持つかもしれないし持たないかもしれない。

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

glXChooseVisual はクライアント側のユーティリティとして実装されて おり、XGetVisualInfo と glXGetConfig しか用いない。 これらの 2 つの関数の呼び出しを用いると、glXChooseVisual によっ て実装されている汎用のアルゴリズムとは異なる選択アルゴリズムを実装する ことができる。

GLX の実装者には、glXChooseVisual で使っている選択アルゴリズムを 変更しないことが強く求められているが、変更自体は禁止されていない。 したがって、選択方法はクライアント側のライブラリがリリースされる度に変 わる可能性がある。

GLXPixmap をサポートしているビジュアルだけをピッキングするための ダイレクトフィルタは存在しない。 GLXPixmap は、X サーバがサポートしているピックスマップの深さの 1 つが GLX_BUFFER_SIZE であるビジュアルに対してサポートされている。

エラー
未定義の GLX 属性が attribList に現れると NULL が返される。

関連項目
glXCreateContext, glXGetConfig