GLCONVOLUTIONFILTER2D
Section: Misc. Reference Manual Pages (3G)
索引
xjman
名前
glConvolutionFilter2D
- 二次元の畳み込みフィルタを定義する
書式
void glConvolutionFilter2D(
GLenum target,
GLenum internalformat,
GLsizei width,
GLsizei height,
GLenum format,
GLenum type,
const GLvoid *image )
引き数
- 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
である。
- width
-
image によって参照されるピクセル配列の幅。
- height
-
image によって参照されるピクセル配列の高さ。
- format
-
image に格納されているピクセルデータのフォーマット。
指定できる値は
GL_RED,
GL_GREEN,
GL_BLUE,
GL_ALPHA,
GL_RGB,
GL_BGR,
GL_RGBA,
GL_BGRA,
GL_LUMINANCE,
GL_LUMINANCE_ALPHA
である。
- type
-
image に格納されているデータの型。
シンボル定数
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
を指定できる。
- image
-
ピクセルデータの 2 次元の配列を指すポインタ。
このデータを処理して畳み込みフィルタのカーネルを構築する。
説明
glConvolutionFilter2D は、ピクセルの配列から
2 次元の畳み込みフィルタのカーネルを構築する。
width, height, format, type, image によって
指定されたピクセルの配列はメモリから取り出されて処理される。
この処理では glDrawPixels を呼んだ場合と同様の処理がなされるが、
RGBA への最後の展開が完了すると処理が終了する。
次に、各ピクセルの R, G, B, A 要素は 4 個の
2D GL_CONVOLUTION_FILTER_SCALE パラメータによって
スケール変換され、4 個の
2D GL_CONVOLUTION_FILTER_BIAS パラメータによって
バイアス処理される。
(スケール変換およびバイアスパラメータは、
対象 GL_CONVOLUTION_2D および
名前 GL_CONVOLUTION_FILTER_SCALE, GL_CONVOLUTION_FILTER_BIAS
を使って glConvolutionParameter を呼ぶことにより設定する。
これらのパラメータそのものは 4 個の値を持つベクトル群であり、
赤、緑、青、アルファ値に対してこの順で適用される。)
R, G, B, A の値は、この処理のどの時点においても [0,1] の範囲に制限されることはない。
次に、各ピクセルは internalformat で指定された内部フォーマット
に変換される。
この変換は単にピクセル(R, G, B, A)の要素値を
内部フォーマット(赤、緑、青、アルファ値、輝度、強度)に含まれている
値にマッピングするだけである。
マッピングは次のように行われる:
|
内部フォーマット | 赤 | 緑 | 青 | アルファ値 | 輝度 | 強度
|
|
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 | |
|
|
結果として得られるピクセルの赤、緑、青、アルファ値、輝度、強度成分は
整数値でなく、浮動小数点値で格納される。
これは 2 次元のフィルタカーネルイメージをなす。
また、このイメージは 座標 i, j によってインデックス付けされている。
i は 0 から始まって左から右に行くにしたがって増加していき、
j は 0 から始まって下から上に行くにしたがって増加していく。
カーネル位置 i,j は 0 から数えて Nth 版目のピクセルから
求められる。ここで N は i+j*width である。
畳み込みが実行された後は、結果として得られる色要素も、
この畳み込みに対応する
GL_POST_CONVOLUTION_c_SCALE パラメータによって
スケール変換され、
GL_POST_CONVOLUTION_c_BIAS パラメータによって
バイアス処理される点に注意すること(ここで c は
RED, GREEN, BLUE, ALPHA を値に取る)。
これらのパラメータは glPixelTransfer で設定する。
注意
glConvolutionFilter2D が存在するのは、
glGetString に引き数 GL_EXTENSIONS を指定して
呼んだ際に GL_ARB_imaging が返される場合だけである。
エラー
GL_INVALID_ENUM:
target が GL_CONVOLUTION_2D でない場合に起こる。
GL_INVALID_ENUM:
internalformat が指定可能な値のいずれでもない場合に起こる。
GL_INVALID_VALUE:
width が 0 より小さいか、対応している最大値よりも大きい場合に起こる。
この最大値は、
対象 GL_CONVOLUTION_2D および
名前 GL_MAX_CONVOLUTION_WIDTH を指定した
glGetConvolutionParameter を呼び出すことにより問い合わせできる。
GL_INVALID_VALUE:
height が 0 より小さいか、対応している最大値よりも大きい場合に起こる。
この最大値は、
対象 GL_CONVOLUTION_2D および
名前 GL_MAX_CONVOLUTION_HEIGHT を指定した
glGetConvolutionParameter を呼び出すことにより問い合わせできる。
GL_INVALID_ENUM:
format が指定可能な値のいずれでもない場合に起こる。
GL_INVALID_ENUM:
type が指定可能な値のいずれでもない場合に起こる。
GL_INVALID_OPERATION:
glBegin と、その対になる glEnd の間で
glConvolutionFilter2D が実行されると起こる。
GL_INVALID_OPERATION:
format の値が
GL_UNSIGNED_BYTE_3_3_2,
GL_UNSIGNED_BYTE_2_3_3_REV,
GL_UNSIGNED_SHORT_5_6_5, or
GL_UNSIGNED_SHORT_5_6_5_REV
のいずれかであり、かつ format が GL_RGB でない場合に起こる。
GL_INVALID_OPERATION:
format の値が
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, or
GL_UNSIGNED_INT_2_10_10_10_REV
であり、かつ format の値が
GL_RGBA と GL_BGRA のいずれでもない場合に起こる。
関連する取得値
glGetConvolutionParameter, glGetConvolutionFilter
関連項目
glConvolutionFilter1D(3G),
glSeparableFilter2D(3G),
glConvolutionParameter(3G),
glPixelTransfer(3G)
Index
- 名前
-
- 書式
-
- 引き数
-
- 説明
-
- 注意
-
- エラー
-
- 関連する取得値
-
- 関連項目
-
Time: 07:01:05 GMT, January 12, 2009