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_LUMINANCE | | | | | R |
|
GL_LUMINANCE_ALPHA | | | | A | R |
|
GL_INTENSITY | | | | | | R
|
GL_RGB | R | G | B | | |
|
GL_RGBA | R | G | B | A | |
|
|
結果として得られるピクセルの赤、緑、青、アルファ値、輝度、強度の各要素は、
整数値でなく浮動小数点値として格納される。
これらの値は、2 個の 1 次元のフィルタカーネルイメージをなす。
列イメージは座標 i によってインデックス付けされる。
この座標は 0 から始まり、左から右の方向に向かって増加する。
列イメージ内の各位置は、行 row の要素 i として得られる。
行イメージは座標 j によってインデックス付けされる。
この座標は 0 から始まり、下から上の方向に向かって増加する。
行イメージ内の各位置は、行 column の要素 j として得られる。
畳み込みが実行された後は、結果として得られる色要素も
適切な GL_POST_CONVOLUTION_c_SCALE パラメータによって
スケール処理され、
適切な GL_POST_CONVOLUTION_c_BIASパラメータによって
バイアス処理される点に注意すること
(ここで、c は RED, GREEN, BLUE, ALPHA
のいずれかの値を取る)。
これらのパラメータは glPixelTransfer によって設定する。
注意
glSeparableFilter2D が存在するのは、
glGetString に引き数GL_EXTENSIONS を指定して
呼んだ際に GL_ARB_imaging が返される場合だけである。
エラー
GL_INVALID_ENUM:
target が GL_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:
height が
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
のいずれかであり、かつ
format が GL_RGB でない場合に起こる。
GL_INVALID_OPERATION:
height が
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
のいずれかであり、かつ format が
GL_RGBA と GL_BGRA のいずれでもない場合に起こる。
関連する取得値
glGetConvolutionParameter, glGetSeparableFilter
関連項目
glConvolutionFilter1D(3G),
glConvolutionFilter2D(3G),
glConvolutionParameter(3G),
glPixelTransfer(3G)
Index
- 名前
-
- 書式
-
- 引き数
-
- 説明
-
- 注意
-
- エラー
-
- 関連する取得値
-
- 関連項目
-
Time: 07:01:11 GMT, January 12, 2009