GLCOPYCONVOLUTIONFILTER2D

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

名前

glCopyConvolutionFilter2D - 2 次元の畳み込みフィルタにピクセルをコピーする

 

書式

void glCopyConvolutionFilter2D( GLenum target,

                                  GLenum internalformat,
                                  GLint x,
                                  GLint y,
                                  GLsizei width,
                                  GLsizei height )

 

引き数

target
GL_CONVOLUTION_2D でなければならない。
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
x, y
コピーするピクセル配列のウィンドウ空間座標。 左下の座標を指定する。
width
コピーするピクセル配列の幅。
height
コピーするピクセル配列の高さ。
 

説明

glCopyConvolutionFilter2D は、2 次元の畳み込みフィルタカーネル を定義する。 このフィルタカーネルは、現在の GL_READ_BUFFER から取り出した ピクセルを持つ(取り出す先はメインメモリではない。これは glConvolutionFilter2D の場合と同じである)。

画面用に整列されたピクセル矩形を使って畳み込みフィルタが定義される。 この矩形は左下隅の座標が (xy), 幅が width, 高さが height である。 この領域にあるピクセルのいずれかが、GL コンテクストに関連付けられた ウィンドウの外にある場合には、そのピクセルについて得られる値は未定義である。

矩形領域に含まれるピクセルは、glReadPixels の引き数 format に RGBA を指定して呼び出したときとほぼ同じように処理される。 ただし、最後の変換の直前に処理が終わる点が異なる。 次に、ピクセルの R, G, B, A 要素は 4 個の 1D GL_CONVOLUTION_FILTER_SCALE パラメータによってスケール処理され、 4 個の 1D GL_CONVOLUTION_FILTER_BIAS パラメータによってバイアス処理される。 (スケールパラメータとバイアスパラメータは glConvolutionParameter を使って設定する。この際には 対象 GL_CONVOLUTION_1D と名前 GL_CONVOLUTION_FILTER_SCALE および GL_CONVOLUTION_FILTER_BIAS が使われる。) パラメータそのものは 4 つの値を持つベクトルを集めたもので、 4 つの値は赤、緑、青、アルファ値に適用される。順序は名前を挙げた順である。) R, G, B, A 値は、この処理におけるどの時点でも [0,1] の範囲への 制限は行われない。

次に各ピクセルは internalformat で指定した内部フォーマットに変換される。 この変換は単にピクセルの要素値(R, G, B, A)を内部フォーマットに 含まれる値(赤、緑、青、アルファ値、輝度、強度)にマッピングするだけである。 マッピングは次の通りである:


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

GL_ALPHAA
GL_LUMINANCER
GL_LUMINANCE_ALPHAAR
GL_INTENSITYR
GL_RGBRGB
GL_RGBARGBA

結果として得られるピクセルの赤、緑、青、アルファ値、輝度、強度の各要素は、 整数値ではなく、浮動小数点値で格納される。

ピクセルの並び順は、 スクリーン座標の x が小さい方がフィルタのイメージ座標の i の小さい方に対応し、 スクリーン座標の y が小さい方がフィルタのイメージ座標の j の小さい方に対応する。

変換が実行された後、結果として得られる色要素も 対応する GL_POST_CONVOLUTION_c_SCALE パラメータによってスケール処理され、 対応する GL_POST_CONVOLUTION_c_BIAS パラメータによってバイアス処理される (ここで c が取る値は RED, GREEN, BLUE, ALPHA の いずれかである)。 これらのパラメータは glPixelTransfer を使って設定する。  

注意

glCopyConvolutionFilter2D が存在するのは、 引き数 GL_EXTENSIONS を指定して glGetString を呼んだ際に GL_ARB_imaging が返される場合だけである。  

エラー

GL_INVALID_ENUM: targetGL_CONVOLUTION_2D でない場合に起こる。 GL_INVALID_ENUM: internalformat が指定可能な値のいずれでもない場合に起こる。 GL_INVALID_VALUE: width が 0 より小さい場合、または対応している最大値より大きい場合に起こる。 この最大値は glGetConvolutionParameter を使って問い合わせることができる。 この際の対象は GL_CONVOLUTION_2D, 名前は GL_MAX_CONVOLUTION_WIDTH である。 GL_INVALID_VALUE: height が 0 より小さい場合、または対応している最大値より大きい場合に起こる。 この最大値は glGetConvolutionParameter を使って問い合わせることができる。 この際の対象は GL_CONVOLUTION_2D, 名前は GL_MAX_CONVOLUTION_HEIGHT である。 GL_INVALID_OPERATION: glBegin と、その対になる glEnd の間で glCopyConvolutionFilter2D が実行されると起こる。  

関連する取得値

glGetConvolutionParameter, glGetConvolutionFilter  

関連項目

glConvolutionFilter2D(3G), glConvolutionParameter(3G), glPixelTransfer(3G)


 

Index

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

jman



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