GLPIXELTRANSFER

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

名前

glPixelTransferf, glPixelTransferi - ピクセルの転送モードを設定する

 

書式

void glPixelTransferf( GLenum pname,

                         GLfloat param )
void glPixelTransferi( GLenum pname,

                         GLint param )

delim $$  

引き数

pname
ピクセル転送のパラメータに設定するシンボル名を指定する。 次のいずれかを指定しなければならない: GL_MAP_COLOR, GL_MAP_STENCIL, GL_INDEX_SHIFT, GL_INDEX_OFFSET, GL_RED_SCALE, GL_RED_BIAS, GL_GREEN_SCALE, GL_GREEN_BIAS, GL_BLUE_SCALE, GL_BLUE_BIAS, GL_ALPHA_SCALE, GL_ALPHA_BIAS, GL_DEPTH_SCALE, GL_DEPTH_BIAS
加えて、GL_ARB_imaging 機能拡張がサポートされている場合 には、次のシンボル定数も使用できる: GL_POST_COLOR_MATRIX_RED_SCALE, GL_POST_COLOR_MATRIX_GREEN_SCALE, GL_POST_COLOR_MATRIX_BLUE_SCALE, GL_POST_COLOR_MATRIX_ALPHA_SCALE, GL_POST_COLOR_MATRIX_RED_BIAS, GL_POST_COLOR_MATRIX_GREEN_BIAS, GL_POST_COLOR_MATRIX_BLUE_BIAS, GL_POST_COLOR_MATRIX_ALPHA_BIAS, GL_POST_CONVOLUTION_RED_SCALE, GL_POST_CONVOLUTION_GREEN_SCALE, GL_POST_CONVOLUTION_BLUE_SCALE, GL_POST_CONVOLUTION_ALPHA_SCALE, GL_POST_CONVOLUTION_RED_BIAS, GL_POST_CONVOLUTION_GREEN_BIAS, GL_POST_CONVOLUTION_BLUE_BIAS, GL_POST_CONVOLUTION_ALPHA_BIAS
param
pname が設定される値を指定する。
 

説明

glPixelTransfer はピクセル転送モードを設定する。 これは以下の操作に影響を及ぼす: glCopyPixels, glCopyTexImage1D, glCopyTexImage2D, glCopyTexSubImage1D, glCopyTexSubImage2D, glCopyTexSubImage3D, glDrawPixels, glReadPixels, glTexImage1D, glTexImage2D, glTexImage3D, glTexSubImage1D, glTexSubImage2D, glTexSubImage3D の各コマンド。 加えて、GL_ARB_imaging のサブセットに対応している場合には、 glColorTable, glColorSubTable, glConvolutionFilter1D, glConvolutionFilter2D, glHistogram, glMinmax, glSeparableFilter2D の各関数にも影響を及ぼす。 ピクセル転送モードによって指定されたアルゴリズムは、 ピクセルがフレームバッファから読み出された後か (glCopyPixels glCopyTexImage1D, glCopyTexImage2D, glCopyTexSubImage1D, glCopyTexSubImage2D, glCopyTexSubImage3D, glReadPixels の場合), クライアントのメモリから取り出された後 (glDrawPixels, glTexImage1D, glTexImage2D, glTexImage3D, に操作を加える。 ピクセル転送操作は、ピクセル操作で生じるコマンドに関係なく、 同じ順序、同じ方法で行われる。 ピクセル格納モード (glPixelStore を参照) は、クライアントのメモリから読み出しているピクセルの展開方法、 およびクライアントのメモリに書き戻しているピクセルのパック方法 を制御する。 ピクセル転送操作は、4個の基本的なピクセル型を扱う: color, color index, depth, stencilcolor ピクセルは4個の浮動小数点値からなる。 この値については、仮数部と指数部の大きさは指定されていない。 また、0 が強度 0 を示し、1 が最大強度を示すような大きさを取る。 color index はひとつの固定小数点値からなる。 この値については、二進の小数点値から右の精度は指定されていない。 depth はひとつの浮動小数点値からなる。 この値については、仮数部と指数部の大きさは指定されていない。 また、0.0 が深さバッファの最小値を示し、1.0 が 深さバッファの最大値を示すような大きさを取る。 最後に、stencil はひとつの固定小数点値からなる。 この値については、二進の小数点値から右の精度は指定されていない。 4つの基本ピクセル型に基づいて実行されるピクセル転送操作は、 以下の通りである:
Color
4つの色要素のそれぞれには、スケール係数が掛けられ、それから バイアス係数が加えられる。 つまり、赤色要素には GL_RED_SCALE が掛けられてから GL_RED_BIAS が加えられる。 緑色要素には GL_GREEN_SCALE が掛けられてから GL_GREEN_BIAS が加えられる。 青色要素には GL_BLUE_SCALE が掛けられてから GL_BLUE_BIAS が加えられる。 アルファ要素には GL_ALPHA_SCALE が掛けられてから GL_ALPHA_BIAS が加えられる。 全ての色要素のスケール処理とバイアス処理が済んだ後には、 それぞれの値は [0,1] の範囲を取るように修正される。 全ての色値、スケール係数、バイアス係数は glPixelTransfer を 使って指定する。
GL_MAP_COLOR が真ならば、 それぞれの色要素は、その色に対応する色-色マップの大きさによって スケール処理され、それから スケール処理された要素値によってインデックス付けされている 色-色マップの内容によって置き換えられる。 つまり、赤色要素は GL_PIXEL_MAP_R_TO_R_SIZE によって スケール処理され、それから自分自身の値によってインデックス付けされた GL_PIXEL_MAP_R_TO_R の内容によって置き換えられる。 緑色要素は GL_PIXEL_MAP_G_TO_G_SIZE によって スケール処理され、それから自分自身の値によってインデックス付けされた GL_PIXEL_MAP_G_TO_G の内容によって置き換えられる。 青色要素は GL_PIXEL_MAP_B_TO_B_SIZE によって スケール処理され、それから自分自身の値によってインデックス付けされた GL_PIXEL_MAP_B_TO_B の内容によって置き換えられる。 アルファ要素は GL_PIXEL_MAP_A_TO_A_SIZE によって スケール処理され、それから自分自身の値によってインデックス付けされた GL_PIXEL_MAP_A_TO_A の内容によって置き換えられる。 マップから取得された全ての要素値は [0,1] の範囲を取るように修正される。 GL_MAP_COLORglPixelTransfer を使って指定する。 さまざまなマップの内容は glPixelMap を使って指定する。
実装が GL_ARB_imaging に対応している場合には、 4つの色要素のそれぞれは、 色行列によって変換した後にスケール処理とバイアス処理を加えることができる。 つまり、 赤色要素には GL_POST_COLOR_MATRIX_RED_SCALE が掛けられ、 それから GL_POST_COLOR_MATRIX_RED_BIAS が加えられる。 緑色要素には GL_POST_COLOR_MATRIX_GREEN_SCALE が掛けられ、 それから GL_POST_COLOR_MATRIX_GREEN_BIAS が加えられる。 青色要素には GL_POST_COLOR_MATRIX_BLUE_SCALE が掛けられ、 それから GL_POST_COLOR_MATRIX_BLUE_BIAS が加えられる。 アルファ要素には GL_POST_COLOR_MATRIX_ALPHA_SCALE が掛けられ、 それから GL_POST_COLOR_MATRIX_ALPHA_BIAS が加えられる。 4つの色要素全てについてスケール処理とバイアス処理が行われた後、 それぞれの値は [0,1] の範囲に収まるように修正される。
同様に、実装が GL_ARB_imaging 機能拡張に対応している場合には、 4つの色要素のそれぞれは、有効になっている畳み込みフィルタで 処理した後にスケール処理とバイアス処理を加えることができる。 つまり、赤色要素には、GL_POST_CONVOLUTION_RED_SCALE が 掛けられてから GL_POST_CONVOLUTION_RED_BIAS が加えられる。 緑色要素には GL_POST_CONVOLUTION_GREEN_SCALE が 掛けられてから GL_POST_CONVOLUTION_GREEN_BIAS が加えられる。 青色要素には GL_POST_CONVOLUTION_BLUE_SCALE が 掛けられてから GL_POST_CONVOLUTION_BLUE_BIAS が加えられる。 アルファ要素には GL_POST_CONVOLUTION_ALPHA_SCALE が 掛けられてから GL_POST_CONVOLUTION_ALPHA_BIAS が加えられる。 4つの色要素すべてにスケール処理とバイアス処理が行われた後、 それぞれの値は [0,1] の範囲を取るように修正される。
色インデックス 全ての色インデックスは GL_INDEX_SHIFT ビットだけ 左にシフトされる。 この際、固定小数点値のインデックスが保持している、小数点以下を表す ビット数を越える部分のビットは、すべて 0 で埋められる。 GL_INDEX_SHIFT が負の値の阿波い、シフトは右向きに 行われ、この場合もゼロで埋められる。 その後、GL_INDEX_OFFSET がインデックスに加えられる。 GL_INDEX_SHIFTGL_INDEX_OFFSETglPixelTransfer に対して指定される。
この点から、結果として得ようとしているピクセルのフォーマット に依存して操作が異なる。 結果として得ようとしているピクセルを色インデックスバッファ に書き込む場合や、これらのピクセルを GL_COLOR_INDEX フォーマットでクライアントのメモリに 詠み戻そうといている場合には、ピクセルは引き続きインデックスとして 扱われる。 GL_MAP_COLOR が真の場合、それぞれのインデックスは $2 sup n ~-~ 1$ でマスクされ、それから マスクされた値(インデックス)が示す GL_PIXEL_MAP_I_TO_I の内容によって置き換えられる。 ここで、$n$ は GL_PIXEL_MAP_I_TO_I_SIZE である。 GL_MAP_COLORglPixelTransfer に対して指定される。 インデックスマップの内容は、glPixelMap に対して指定される。
結果として得られるピクセルが RGBA 色バッファに書き込まれる場合や、 これらのピクセルが GL_COLOR_INDEX 以外のフォーマットで クライアントのメモリに読み戻される場合には、 これらのピクセルはインデックス形式から、次の4つのマップに よって参照される色に変換される: GL_PIXEL_MAP_I_TO_R, GL_PIXEL_MAP_I_TO_G, GL_PIXEL_MAP_I_TO_B, GL_PIXEL_MAP_I_TO_A。 参照される前には、インデックスは $2 sup n ~-~ 1$ でマスクされる。 ここで $n$ は、 赤色のマップに対しては GL_PIXEL_MAP_I_TO_R_SIZE, 緑色のマップに対しては GL_PIXEL_MAP_I_TO_G_SIZE, 青色のマップに対しては GL_PIXEL_MAP_I_TO_B_SIZE, アルファ値のマップに対しては GL_PIXEL_MAP_I_TO_A_SIZE である。 マップから値が取られる全ての要素は、値の取得後に、値が [0,1]の範囲を取るように修正される。 4つのマップの内容は、glPixelMap に対して指定される。
Depth
それぞれの深さ値に対して、まず GL_DEPTH_SCALE が掛けられ、 次に GL_DEPTH_BIAS が加えられ、さらに値が [0,1] の範囲を 取るように修正される。
Stencil
それぞれのインデックスは GL_INDEX_SHIFT ビットだけシフトされ、 それから GL_INDEX_OFFSET が加えられる。 シフトは色インデックスと同じように行われる。 GL_MAP_STENCIL が真の場合は、 それぞれのインデックスは $2 sup n ~-~ 1$ でマスクされ、 それからマスクされた値(インデックス)が示す GL_PIXEL_MAP_S_TO_S の内容によって置き換えられる。 以下の表は、ピクセル転送のパラメータそれぞれに対する、 型、初期値、正しい値の範囲を示す。 パラメータの設定は glPixelTransfer で行う。


p名前初期値値の正しい範囲

GL_MAP_COLORbooleanfalsetrue/false
GL_MAP_STENCILbooleanfalsetrue/false
GL_INDEX_SHIFTinteger0(-Infinity,Infinity)
GL_INDEX_OFFSETinteger0(-Infinity,Infinity)
GL_RED_SCALEfloat1(-Infinity,Infinity)
GL_GREEN_SCALEfloat1(-Infinity,Infinity)
GL_BLUE_SCALEfloat1(-Infinity,Infinity)
GL_ALPHA_SCALEfloat1(-Infinity,Infinity)
GL_DEPTH_SCALEfloat1(-Infinity,Infinity)
GL_RED_BIASfloat0(-Infinity,Infinity)
GL_GREEN_BIASfloat0(-Infinity,Infinity)
GL_BLUE_BIASfloat0(-Infinity,Infinity)
GL_ALPHA_BIASfloat0(-Infinity,Infinity)
GL_DEPTH_BIASfloat0(-Infinity,Infinity)
GL_POST_COLOR_MATRIX_RED_SCALEfloat1(-Infinity,Infinity)
GL_POST_COLOR_MATRIX_GREEN_SCALEfloat1(-Infinity,Infinity)
GL_POST_COLOR_MATRIX_BLUE_SCALEfloat1(-Infinity,Infinity)
GL_POST_COLOR_MATRIX_ALPHA_SCALEfloat1(-Infinity,Infinity)
GL_POST_COLOR_MATRIX_RED_BIASfloat0(-Infinity,Infinity)
GL_POST_COLOR_MATRIX_GREEN_BIASfloat0(-Infinity,Infinity)
GL_POST_COLOR_MATRIX_BLUE_BIASfloat0(-Infinity,Infinity)
GL_POST_COLOR_MATRIX_ALPHA_BIASfloat0(-Infinity,Infinity)
GL_POST_CONVOLUTION_RED_SCALEfloat1(-Infinity,Infinity)
GL_POST_CONVOLUTION_GREEN_SCALEfloat1(-Infinity,Infinity)
GL_POST_CONVOLUTION_BLUE_SCALEfloat1(-Infinity,Infinity)
GL_POST_CONVOLUTION_ALPHA_SCALEfloat1(-Infinity,Infinity)
GL_POST_CONVOLUTION_RED_BIASfloat0(-Infinity,Infinity)
GL_POST_CONVOLUTION_GREEN_BIASfloat0(-Infinity,Infinity)
GL_POST_CONVOLUTION_BLUE_BIASfloat0(-Infinity,Infinity)
GL_POST_CONVOLUTION_ALPHA_BIASfloat0(-Infinity,Infinity)

glPixelTransferf を用いると、ピクセル転送のパラメータ を設定できる。 パラメータの型が真偽値型の場合、0 が偽を意味し、 それ以外の値は真を意味する。 pname が整数型のパラメータである場合、param は 最も値が近い整数に丸められる。 同じように、glPixelTransferi を用いることにより、 任意のピクセル転送パラメータを設定できる。 param が 0 の場合、パラメータには偽が設定され、 それ以外の値の場合には、パラメータに真が設定される。 param は、実数値を取る型に割り当てられる前に、 浮動小数点値に変換される。

 

注意

次のコマンドがディスプレイリスト中で用いられた 場合(glNewList, glCallList を参照)、 ディスプレイリストが 実行された 際に有効となるピクセル転送モードの設定は、 コマンドが使われた時の設定である: glColorTable, glColorSubTable, glConvolutionFilter1D, glConvolutionFilter2D, glCopyPixels, glCopyTexImage1D, glCopyTexImage2D, glCopyTexSubImage1D, glCopyTexSubImage2D, glCopyTexSubImage3D, glDrawPixels, glReadPixels, glSeparableFilter2D, glTexImage1D, glTexImage2D, glTexImage3D, glTexSubImage1D, glTexSubImage2D, glTexSubImage3D。 これらは、コマンドがコンパイルされてディスプレイリストに 組み込まれた再の設定とは異なることがある。  

エラー

GL_INVALID_ENUM: pname が有効な値でない場合に起こる。 GL_INVALID_OPERATION: glBegin と、その対になる glEnd の間で glPixelTransfer が実行されると起こる。  

関連する取得値

引き数 GL_MAP_COLOR を指定した glGet
引き数 GL_MAP_STENCIL を指定した glGet
引き数 GL_INDEX_SHIFT を指定した glGet
引き数 GL_INDEX_OFFSET を指定した glGet
引き数 GL_RED_SCALE を指定した glGet
引き数 GL_RED_BIAS を指定した glGet
引き数 GL_GREEN_SCALE を指定した glGet
引き数 GL_GREEN_BIAS を指定した glGet
引き数 GL_BLUE_SCALE を指定した glGet
引き数 GL_BLUE_BIAS を指定した glGet
引き数 GL_ALPHA_SCALE を指定した glGet
引き数 GL_ALPHA_BIAS を指定した glGet
引き数 GL_DEPTH_SCALE を指定した glGet
引き数 GL_DEPTH_BIAS を指定した glGet
引き数 GL_POST_COLOR_MATRIX_RED_SCALE を指定した glGet
引き数 GL_POST_COLOR_MATRIX_RED_BIAS を指定した glGet
引き数 GL_POST_COLOR_MATRIX_GREEN_SCALE を指定した glGet
引き数 GL_POST_COLOR_MATRIX_GREEN_BIAS を指定した glGet
引き数 GL_POST_COLOR_MATRIX_BLUE_SCALE を指定した glGet
引き数 GL_POST_COLOR_MATRIX_BLUE_BIAS を指定した glGet
引き数 GL_POST_COLOR_MATRIX_ALPHA_SCALE を指定した glGet
引き数 GL_POST_COLOR_MATRIX_ALPHA_BIAS を指定した glGet
引き数 GL_POST_CONVOLUTION_RED_SCALE を指定した glGet
引き数 GL_POST_CONVOLUTION_RED_BIAS を指定した glGet
引き数 GL_POST_CONVOLUTION_GREEN_SCALE を指定した glGet
引き数 GL_POST_CONVOLUTION_GREEN_BIAS を指定した glGet
引き数 GL_POST_CONVOLUTION_BLUE_SCALE を指定した glGet
引き数 GL_POST_CONVOLUTION_BLUE_BIAS を指定した glGet
引き数 GL_POST_CONVOLUTION_ALPHA_SCALE を指定した glGet
引き数 GL_POST_CONVOLUTION_ALPHA_BIAS を指定した glGet  

関連項目

glCallList(3G), glColorTable(3G), glColorSubTable(3G), glConvolutionFilter1D(3G), glConvolutionFilter2D(3G), glCopyPixels(3G), glCopyTexImage1D(3G), glCopyTexImage2D(3G), glCopyTexSubImage1D(3G), glCopyTexSubImage2D(3G), glCopyTexSubImage3D(3G), glDrawPixels(3G), glNewList(3G), glPixelMap(3G), glPixelStore(3G), glPixelZoom(3G), glReadPixels(3G), glTexImage1D(3G), glTexImage2D(3G), glTexImage3D(3G), glTexSubImage1D(3G), glTexSubImage2D(3G), glTexSubImage3D(3G)


 

Index

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

jman



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