GLCOLORTABLE

Section: Misc. Reference Manual Pages (3G)
索引 xjman
 

名前

glColorTable - 色参照テーブルを定義する

 

書式

void glColorTable( GLenum target,

                     GLenum internalformat,
                     GLsizei width,
                     GLenum format,
                     GLenum type,
                     const GLvoid *table )

 

引き数

target
次の値のいずれかでなければならない: GL_COLOR_TABLE, GL_POST_CONVOLUTION_COLOR_TABLE, GL_POST_COLOR_MATRIX_COLOR_TABLE, GL_PROXY_COLOR_TABLE, GL_PROXY_POST_CONVOLUTION_COLOR_TABLE, GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE
internalformat
色テーブルの内部フォーマット。 指定できる値は次の通りである: GL_ALPHA, GL_ALPHA4, GL_ALPHA8, GL_ALPHA12, GL_ALPHA16, GL_LUMINANCE, GL_LUMINANCE4, GL_LUMINANCE8, GL_LUMINANCE12, GL_LUMINANCE16, GL_LUMINANCE_ALPHA, GL_LUMINANCE4_ALPHA4, GL_LUMINANCE6_ALPHA2, GL_LUMINANCE8_ALPHA8, GL_LUMINANCE12_ALPHA4, GL_LUMINANCE12_ALPHA12, GL_LUMINANCE16_ALPHA16, GL_INTENSITY, GL_INTENSITY4, GL_INTENSITY8, GL_INTENSITY12, GL_INTENSITY16, GL_R3_G3_B2, GL_RGB, GL_RGB4, GL_RGB5, GL_RGB8, GL_RGB10, GL_RGB12, GL_RGB16, GL_RGBA, GL_RGBA2, GL_RGBA4, GL_RGB5_A1, GL_RGBA8, GL_RGB10_A2, GL_RGBA12, GL_RGBA16
width
table で指定した色参照テーブルの項目数。
format
table で指定するピクセルデータのフォーマット。 指定できる値は次の通りである: GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_RGB, GL_BGR, GL_RGBA, GL_BGRA
type
table で指定されるピクセルデータの型。 指定できる値は次の通りである: GL_UNSIGNED_BYTE, GL_BYTE, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT, GL_FLOAT, GL_UNSIGNED_BYTE_3_3_2, GL_UNSIGNED_BYTE_2_3_3_REV, GL_UNSIGNED_SHORT_5_6_5, GL_UNSIGNED_SHORT_5_6_5_REV, GL_UNSIGNED_SHORT_4_4_4_4, GL_UNSIGNED_SHORT_4_4_4_4_REV, GL_UNSIGNED_SHORT_5_5_5_1, GL_UNSIGNED_SHORT_1_5_5_5_REV, GL_UNSIGNED_INT_8_8_8_8, GL_UNSIGNED_INT_8_8_8_8_REV, GL_UNSIGNED_INT_10_10_10_2, GL_UNSIGNED_INT_2_10_10_10_REV
table
色テーブルの構築に使うピクセルデータ。 1 次元の配列を指すポインタである。
 

説明

glColorTable には 2 通りの使い方がある: 特定の引き数のセットを与えて指定する参照テーブルについて 実際のサイズと色解像度を調べることと、色参照テーブルの 内容をロードすることである。 前者の使いかたでは targetGL_PROXY_* を指定し、後者の使いかたではそれ以外の値を指定すること。 targetGL_COLOR_TABLE, GL_POST_CONVOLUTION_COLOR_TABLE, GL_POST_COLOR_MATRIX_COLOR_TABLE のいずれかの場合、glColorTable は ピクセルの配列から色参照テーブルを構築する。 ピクセルの配列は width, format, type, table で指定される。この配列はメモリから展開され、 glDrawPixels が呼ばれた場合と同じように処理されるが、 最後の配列値の RGBA への展開が終わった時点で処理は終わりになる。 次に、テーブルのために定義された 4 つのスケールパラメータと 4 つの バイアスパラメータは、各ピクセルの R, G, B, A 成分を スケーリング処理・バイアス処理するために使われる。 (これらのスケールパラメータとバイアスパラメータを設定するには glColorTableParameter が使われる。) 次に、R, G, B, A 値は [0, 1] の範囲に収まるように修正。 それから、各ピクセルは internalformat で指定される 内部フォーマットに変換される。 この変換は単にピクセルの成分値(R, G, B, A)を 内部フォーマット(赤、緑、青、アルファ値、輝度(luminance)、強度(intensity))に マッピングするだけである。 マッピングは次の通りである:

内部フォーマットアルファ値輝度強度

GL_ALPHAA
GL_LUMINANCER
GL_LUMINANCE_ALPHAAR
GL_INTENSITYR
GL_RGBRGB
GL_RGBARGBA

最後に,結果として得られるピクセルの赤・緑・青・アルファ値・輝度・強度成分 が色テーブルに格納される。 これらは、 [0, width - 1] の範囲のインデックスを持つ 1 次元のテーブルを作る。 targetGL_PROXY_* ならば、 glColorTable は代用色テーブル(proxy color table)の状態変数 の値を再計算して格納する。 状態変数の値は GL_COLOR_TABLE_FORMAT, GL_COLOR_TABLE_WIDTH, GL_COLOR_TABLE_RED_SIZE, GL_COLOR_TABLE_GREEN_SIZE, GL_COLOR_TABLE_BLUE_SIZE, GL_COLOR_TABLE_ALPHA_SIZE, GL_COLOR_TABLE_LUMINANCE_SIZE, GL_COLOR_TABLE_INTENSITY_SIZE である。 この場合、イメージや実際の色テーブルの状態には影響はない。 指定された色テーブルが多すぎてサポートされていな場合には、 代用色テーブルの全ての状態変数(上記)には 0 が設定される。 それ以外の場合には、色テーブルは対応する代用でない対象を使って glColorTable がサポートし、代理テーブルの状態変数は、 対象が定義されている途中であるかのように設定される。 代理テーブルの状態変数は、対象を GL_PROXY_* として glGetColorTableParameter を呼ぶことにより取得できる。 これにより、アプリケーションは特定の glColorTable コマンドが 成功するかどうかを調べることができる。 また、その結果として得られる色テーブルの属性がどうなるのかを 調べることができる。 色テーブルが有効であり、かつその幅が 0 でない値ならば、 色テーブルの内容は各 RGBA ピクセルグループの内容の一部分を 置き換えるために使われる。これはテーブルの内部フォーマットに 基づいて行われる。 各ピクセルグループは色要素(R, G, B, A)を持ち、 各要素の取る値は [0.0, 1.0] の範囲である。 色要素は、色参照テーブルの大きさがインデックスをなすように スケール変換される。 次に、テーブルの内部フォーマットに基づいた要素の要素のサブセット は、そのインデックスによって選ばれたテーブル項目によって 置き換えられる。 色要素とテーブルの内容が以下の内容を表す場合、

表現意味

rR から計算したテーブルインデックス
gG から計算したテーブルインデックス
bB から計算したテーブルインデックス
aA から計算したテーブルインデックス
L[i]インデックス i における輝度値
I[i]インデックス i における強度値
R[i]インデックス i における R 値
G[i]インデックス i における G 値
B[i]インデックス i における B 値
A[i]インデックス i におけるアルファ値

色テーブル参照の結果は以下のようになる:

結果として得られるテクスチャ要素
テーブルの内部フォーマットRGBA

GL_ALPHARGBA[a]
GL_LUMINANCEL[r]L[g]L[b]At
GL_LUMINANCE_ALPHAL[r]L[g]L[b]A[a]
GL_INTENSITYI[r]I[g]I[b]I[a]
GL_RGBR[r]G[g]B[b]A
GL_RGBAR[r]G[g]B[b]A[a]

GL_COLOR_TABLE が有効な場合、ピクセルマップ操作(有効で あれば)の結果として得られる色は、 畳み込み(convolution)操作に渡される前に色参照テーブルに よってマッピングされる。 GL_POST_CONVOLUTION_COLOR_TABLE が有効な時は、 畳み込み操作の結果として得られる色は、 後処理用の畳み込み色参照テーブルによって変更される。 変更されたこれらの色は、色行列操作に送られる。 最後に、GL_POST_COLOR_MATRIX_COLOR_TABLE が有効ならば、 色行列操作の結果として得られる色は、 ヒストグラム操作に使われる前に、 後処理用の色行列色参照テーブルによってマッピングされる。  

注意

glColorTable は、 引き数に GL_EXTENSIONS を指定して glGetString を 呼んだ際に GL_ARB_imaging が返される場合しか存在しない。 targetGL_COLOR_TABLE または GL_POST_CONVOLUTION_COLOR_TABLE, GL_POST_COLOR_MATRIX_COLOR_TABLE が設定されている場合には、 width は 2 の乗数でなければならない。 そうでない場合には GL_INVALID_VALUE エラーとなる。  

エラー

GL_INVALID_ENUM: target が指定可能な値のいずれでもない場合に起こる。 GL_INVALID_ENUM: internalformat が指定可能な値のいずれでもない場合に起こる。 GL_INVALID_VALUE: width が 0 より小さい値の場合に起こる。 GL_INVALID_ENUM: format が指定可能な値のいずれでもない場合に起こる。 GL_INVALID_ENUM: type が指定可能な値のいずれでもない場合に起こる。 GL_TABLE_TOO_LARGE: 要求された色テーブルが大きすぎて実装が対応しておらず、かつ targetGL_PROXY_* でない場合に起こる。 GL_INVALID_OPERATION: glBegin と、その対になる glEnd の間で glColorTable が実行された場合に起こる。  

関連する取得値

glGetColorTableParameter  

関連項目

glColorSubTable(3G), glColorTableParameter(3G), glCopyColorTable(3G), glCopyColorSubTable(3G), glGetColorTable(3G)


 

Index

名前
書式
引き数
説明
注意
エラー
関連する取得値
関連項目

jman



Time: 07:01:05 GMT, January 12, 2009