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 通りの使い方がある:
特定の引き数のセットを与えて指定する参照テーブルについて
実際のサイズと色解像度を調べることと、色参照テーブルの
内容をロードすることである。
前者の使いかたでは target に GL_PROXY_*
を指定し、後者の使いかたではそれ以外の値を指定すること。
target が GL_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_ALPHA | | | | A | |
|
GL_LUMINANCE | | | | | R |
|
GL_LUMINANCE_ALPHA | | | | A | R |
|
GL_INTENSITY | | | | | | R
|
GL_RGB | R | G | B | | |
|
GL_RGBA | R | G | B | A | |
|
|
最後に,結果として得られるピクセルの赤・緑・青・アルファ値・輝度・強度成分
が色テーブルに格納される。
これらは、
[0, width - 1] の範囲のインデックスを持つ
1 次元のテーブルを作る。
target が GL_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] の範囲である。
色要素は、色参照テーブルの大きさがインデックスをなすように
スケール変換される。
次に、テーブルの内部フォーマットに基づいた要素の要素のサブセット
は、そのインデックスによって選ばれたテーブル項目によって
置き換えられる。
色要素とテーブルの内容が以下の内容を表す場合、
|
表現 | 意味
|
|
r | R から計算したテーブルインデックス
|
g | G から計算したテーブルインデックス
|
b | B から計算したテーブルインデックス
|
a | A から計算したテーブルインデックス
|
L[i] | インデックス i における輝度値
|
I[i] | インデックス i における強度値
|
R[i] | インデックス i における R 値
|
G[i] | インデックス i における G 値
|
B[i] | インデックス i における B 値
|
A[i] | インデックス i におけるアルファ値
|
|
色テーブル参照の結果は以下のようになる:
|
結果として得られるテクスチャ要素 |
|
テーブルの内部フォーマット | R | G | B | A
|
|
GL_ALPHA | R | G | B | A[a]
|
GL_LUMINANCE | L[r] | L[g] | L[b] | At
|
GL_LUMINANCE_ALPHA | L[r] | L[g] | L[b] | A[a]
|
GL_INTENSITY | I[r] | I[g] | I[b] | I[a]
|
GL_RGB | R[r] | G[g] | B[b] | A
|
GL_RGBA | R[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 が返される場合しか存在しない。
target に GL_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:
要求された色テーブルが大きすぎて実装が対応しておらず、かつ
target が GL_PROXY_* でない場合に起こる。
GL_INVALID_OPERATION:
glBegin と、その対になる glEnd の間で
glColorTable が実行された場合に起こる。
関連する取得値
glGetColorTableParameter
関連項目
glColorSubTable(3G),
glColorTableParameter(3G),
glCopyColorTable(3G),
glCopyColorSubTable(3G),
glGetColorTable(3G)
Index
- 名前
-
- 書式
-
- 引き数
-
- 説明
-
- 注意
-
- エラー
-
- 関連する取得値
-
- 関連項目
-
Time: 07:01:05 GMT, January 12, 2009