void glConvolutionFilter2DEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image)
target | Must be GL_CONVOLUTION_2D_EXT. |
internalformat | The internal format of the convolution filter kernel. The allowable values are GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_INTENSITY, GL_RGB, and GL_RGBA. |
width | The width of the pixel array referenced by image. |
height | The height of the pixel array referenced by image. |
format | The format of the pixel data. The allowable values are GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_RGB, GL_RGBA, GL_BGR_EXT, GL_BGRA_EXT, GL_422_EXT, GL_422_REV_EXT, GL_422_AVERAGE_EXT, and GL_422_REV_AVERAGE_EXT. |
type | Specifies the data type for pixel data. The allowable values are GL_UNSIGNED_BYTE, GL_BYTE, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT, GL_FLOAT, GL_UNSIGNED_BYTE_3_3_2_EXT, GL_UNSIGNED_BYTE_2_3_3_REV_EXT, GL_UNSIGNED_SHORT_5_6_5_EXT, GL_UNSIGNED_SHORT_5_6_5_REV_EXT, GL_UNSIGNED_SHORT_4_4_4_4_EXT, GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT, GL_UNSIGNED_SHORT_5_5_5_1_EXT, GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT, GL_UNSIGNED_INT_8_8_8_8_EXT, GL_UNSIGNED_INT_8_8_8_8_REV_EXT, GL_UNSIGNED_INT_10_10_10_2_EXT, and GL_UNSIGNED_INT_2_10_10_10_REV_EXT. |
image | Pointer to a two-dimensional array of pixel data that is processed to build the convolution filter kernel. |
The R, G, B, and A components of each pixel are scaled by the four
2D GL_CONVOLUTION_FILTER_SCALE_EXT parameters and biased by the four 2D
GL_CONVOLUTION_FILTER_BIAS_EXT parameters. (The scale and bias
parameters are set by glConvolutionParameterEXT
using the GL_CONVOLUTION_2D_EXT target and the names
GL_CONVOLUTION_FILTER_SCALE_EXT and GL_CONVOLUTION_FILTER_BIAS_EXT. The
parameters themselves are vectors of four values that are applied to red,
green, blue, and alpha, in that order.) The R, G, B, and A values are
not clamped to
Each pixel is then converted to the internal format specified by
internalformat. This conversion maps the component values of the
pixel
internalformat | Red | Green | Blue | Alpha | Luminance | Intensity |
---|---|---|---|---|---|---|
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 | - | - |
The red, green, blue, alpha, luminance, and intensity components of the resulting pixels are stored in floating-point rather than integer format. They form a two-dimensional filter kernel image indexed with coordinate i and j such that i starts at 0 and increases from left to right, and j starts at 0 and increases from bottom to top. Kernel location (i, j) is derived from the nth pixel, where n is i + j * width.
Note that after a convolution is performed, the resulting color components are also scaled by their corresponding GL_POST_CONVOLUTION_c_SCALE_EXT parameters and biased by their corresponding GL_POST_CONVOLUTION_c_BIAS_EXT parameters (where c takes on the values RED, GREEN, BLUE, and ALPHA). These parameters are set by glPixelTransfer.
GL_INVALID_ENUM is generated if internalformat is not one of the allowable values.
GL_INVALID_VALUE is generated if width is less than zero or greater than the maximum supported value. This value may be queried with glGetConvolutionParameterEXT using target GL_CONVOLUTION_2D_EXT and name GL_MAX_CONVOLUTION_WIDTH_EXT.
GL_INVALID_VALUE is generated if height is less than zero or greater than the maximum supported value. This value may be queried with glGetConvolutionParameterEXT using target GL_CONVOLUTION_2D_EXT and name GL_MAX_CONVOLUTION_HEIGHT_EXT.
GL_INVALID_ENUM is generated if format is not one of the allowable values.
GL_INVALID_ENUM is generated if type is not one of the allowable values.
GL_INVALID_OPERATION is generated if glConvolutionFilter2DEXT is executed between the execution of glBegin and the corresponding execution of glEnd.