GLSEPARABLEFILTER2D

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

名前

glSeparableFilter2D - 分割可能な 2 次元の畳み込みフィルタを定義する

 

書式

void glSeparableFilter2D( GLenum target,

                            GLenum internalformat,
                            GLsizei width,
                            GLsizei height,
                            GLenum format,
                            GLenum type,
                            const GLvoid *row,
                            const GLvoid *column )

 

引き数

target
GL_SEPARABLE_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
width
row によって参照されるピクセル配列に格納されている 要素数。 (これは分割可能なフィルタカーネルの幅である。)
height
column によって参照されるピクセル配列に格納されている 要素数。 (これは分割可能なフィルタカーネルの高さである。)
format
row および column に格納されているピクセルデータ。 次の値を指定できる: GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA, GL_RGB, GL_BGR, GL_RGBA, GL_BGRA, GL_INTENSITY, GL_LUMINANCE, GL_LUMINANCE_ALPHA
type
row および column に格納されているピクセルデータの型。 次のシンボル定数を指定できる: GL_UNSIGNED_BYTE, GL_BYTE, GL_BITMAP, 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
row
ピクセルの1次元配列を指すポインタ。 この配列を処理することによりフィルタカーネルの列が構築される。
column
ピクセルの1次元配列を指すポインタ。 この配列を処理することによりフィルタカーネルの行が構築される。
 

説明

glSeparableFilter2D は、ふたつのピクセル配列を元にして、 2 次元の分割可能な畳み込みフィルタカーネルを構築する。

(width, format, type, row) および (height, format, type, column) によって指定された配列は、ちょうど glDrawPixels に 渡した場合と同じように処理されるが、 この処理は最後の RGBA への展開が完了した直後に終了する。

次に、両方の配列に格納されている全てのピクセルの R, G, B, A 要素は 4 つに分割可能な 2 次元の GL_CONVOLUTION_FILTER_SCALE パラメータを 使ってスケール処理され、 4 つに分割可能な 2 次元の GL_CONVOLUTION_FILTER_BIAS パラメータを 使ってバイアス処理される。 (スケールパラメータとバイアスパラメータは、 GL_SEPARABLE_2D ターゲットを与えた glConvolutionParameter において、 名前 GL_CONVOLUTION_FILTER_SCALE または名前 GL_CONVOLUTION_FILTER_BIAS を指定することにより設定する。 パラメータ自体は 4 つの値からなるベクトル値であり、R, G, B, A 値が この順序で当てはまる。) この処理の間のどの時点においても、R, G, B, A 値は [0, 1] の範囲に 制約されない。

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


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

GL_LUMINANCER
GL_LUMINANCE_ALPHAAR
GL_INTENSITYR
GL_RGBRGB
GL_RGBARGBA

結果として得られるピクセルの赤、緑、青、アルファ値、輝度、強度の各要素は、 整数値でなく浮動小数点値として格納される。 これらの値は、2 個の 1 次元のフィルタカーネルイメージをなす。 列イメージは座標 i によってインデックス付けされる。 この座標は 0 から始まり、左から右の方向に向かって増加する。 列イメージ内の各位置は、行 row の要素 i として得られる。 行イメージは座標 j によってインデックス付けされる。 この座標は 0 から始まり、下から上の方向に向かって増加する。 行イメージ内の各位置は、行 column の要素 j として得られる。

畳み込みが実行された後は、結果として得られる色要素も 適切な GL_POST_CONVOLUTION_c_SCALE パラメータによって スケール処理され、 適切な GL_POST_CONVOLUTION_c_BIASパラメータによって バイアス処理される点に注意すること (ここで、cRED, GREEN, BLUE, ALPHA のいずれかの値を取る)。 これらのパラメータは glPixelTransfer によって設定する。  

注意

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

エラー

GL_INVALID_ENUM: targetGL_SEPARABLE_2D でなければ起こる。 GL_INVALID_ENUM: internalformat が指定可能な値のいずれでもない場合に起こる。 GL_INVALID_VALUE: width が 0 より小さいか、または実装が対応している最大値よりも 大きい場合に起こる。 この値は、glGetConvolutionParameter に ターゲット GL_SEPARABLE_2D および 名前 GL_MAX_CONVOLUTION_WIDTH を与えることにより 問い合わせることができる。 GL_INVALID_VALUE: height が 0 より小さいか、または実装が対応している最大値よりも 大きい場合に起こる。 この値は、glGetConvolutionParameter に ターゲット GL_SEPARABLE_2D および 名前 GL_MAX_CONVOLUTION_HEIGHT を与えることにより 問い合わせることができる。 GL_INVALID_ENUM: format が指定可能な値のいずれでもない場合に起こる。 GL_INVALID_ENUM: type が指定可能な値のいずれでもない場合に起こる。 GL_INVALID_OPERATION: glBegin と、その対になる glEnd との間で glSeparableFilter2D を実行すると起こる。 GL_INVALID_OPERATION: heightGL_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 のいずれかであり、かつ formatGL_RGB でない場合に起こる。 GL_INVALID_OPERATION: heightGL_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 のいずれかであり、かつ formatGL_RGBAGL_BGRA のいずれでもない場合に起こる。  

関連する取得値

glGetConvolutionParameter, glGetSeparableFilter  

関連項目

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


 

Index

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

jman



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