GLCONVOLUTIONFILTER1D(3G)
โจ GLCONVOLUTIONFILTER1D โจ
okay bestie, welcome to the 3G section of the manual ๐
this one's called glConvolutionFilter1D and it's literally about building 1D convolution filter kernels. no cap. let's get into it ๐ฆ
๐ธ NAME ๐ธ
glConvolutionFilter1D โ define a one-dimensional convolution filter ๐
๐ C SPECIFICATION ๐
void glConvolutionFilter1D( GLenum target,
GLenum internalformat,
GLsizei width,
GLenum format,
GLenum type,
const GLvoid *image )
๐ PARAMETERS ๐
targetโ has to beGL_CONVOLUTION_1D. that's it. that's the only vibe it accepts โจinternalformatโ the internal format of the convolution filter kernel. the allowable values areGL_ALPHA,GL_LUMINANCE,GL_LUMINANCE_ALPHA,GL_INTENSITY,GL_RGB, andGL_RGBA๐widthโ the width of the pixel array thatimagepoints at ๐formatโ the format of the pixel data inimage. allowable values areGL_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, orGL_RGBA16. yeah that's a lot, she's thorough ๐typeโ the type of the pixel data inimage. the symbolic constantsGL_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, andGL_UNSIGNED_INT_2_10_10_10_REVare accepted ๐imageโ pointer to a one-dimensional array of pixel data that gets processed to build the convolution filter kernel ๐ธ
๐ DESCRIPTION ๐
glConvolutionFilter1D builds a one-dimensional convolution filter kernel out of an array of pixels. periodt โจ
the pixel array you specified with width, format, type, and image gets extracted from memory and processed exactly as if glDrawPixels were called โ except the processing stops right after the final expansion to RGBA is done. no further, bestie, that's the whole journey ๐ถโโ๏ธ
next, the R, G, B, and A components of each pixel get scaled by the four 1D GL_CONVOLUTION_FILTER_SCALE parameters and biased by the four 1D GL_CONVOLUTION_FILTER_BIAS parameters. (those scale and bias parameters are set by glConvolutionParameter using the GL_CONVOLUTION_1D target and the names GL_CONVOLUTION_FILTER_SCALE and GL_CONVOLUTION_FILTER_BIAS. the parameters themselves are vectors of four values, applied to red, green, blue, and alpha, in that order. iykyk ๐ฏ) and listen โ the R, G, B, and A values are not clamped to [0,1] at any point during this whole process. not once. she refuses ๐ฅ
then each pixel gets converted to the internal format specified by internalformat. this conversion is honestly simple: it just maps the component values of the pixel (R, G, B, and A) onto the values included in the internal format (red, green, blue, alpha, luminance, and intensity). the mapping goes like this ๐
Internal Format 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/or intensity components of the resulting pixels are stored in floating-point rather than integer format. they form a one-dimensional filter kernel image indexed with coordinate i such that i starts at 0 and increases from left to right ๐ฆ kernel location i is derived from the ith pixel, counting from 0 ๐งฎ
okay so heads up โ after a convolution is performed, the resulting color components are also scaled by their correspondingGL_POST_CONVOLUTION_c_SCALEparameters and biased by their correspondingGL_POST_CONVOLUTION_c_BIASparameters (wherectakes on the valuesRED,GREEN,BLUE, andALPHA). those parameters are set byglPixelTransfer. yes, there's a second round of scaling. she's doing the most, respectfully ๐
โญ NOTES โญ
glConvolutionFilter1D is present only if GL_ARB_imaging is returned when glGetString is called with an argument of GL_EXTENSIONS. so check first, bestie, or you'll be sad ๐ญ
๐ ERRORS ๐
GL_INVALID_ENUMis generated iftargetis notGL_CONVOLUTION_1D.GL_INVALID_ENUMis generated ifinternalformatis not one of the allowable values.GL_INVALID_VALUEis generated ifwidthis less than zero or greater than the maximum supported value. that value can be queried withglGetConvolutionParameterusing targetGL_CONVOLUTION_1Dand nameGL_MAX_CONVOLUTION_WIDTH๐GL_INVALID_ENUMis generated ifformatis not one of the allowable values.GL_INVALID_ENUMis generated iftypeis not one of the allowable values.GL_INVALID_OPERATIONis generated ifglConvolutionFilter1Dis executed between the execution ofglBeginand the corresponding execution ofglEnd. justโฆ don't do that ๐GL_INVALID_OPERATIONis generated ifformatis one ofGL_UNSIGNED_BYTE_3_3_2,GL_UNSIGNED_BYTE_2_3_3_REV,GL_UNSIGNED_SHORT_5_6_5, orGL_UNSIGNED_SHORT_5_6_5_REVandtypeis notGL_RGB.GL_INVALID_OPERATIONis generated ifformatis one ofGL_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, orGL_UNSIGNED_INT_2_10_10_10_REVandtypeis neitherGL_RGBAnorGL_BGRA.
๐ ASSOCIATED GETS ๐
glGetConvolutionParameterglGetConvolutionFilter
๐ SEE ALSO ๐
glConvolutionFilter2D(3G)glSeparableFilter2D(3G)glConvolutionParameter(3G)glPixelTransfer(3G)
and that's the whole page, bestie!! ๐ซถ this one's from the 3G manual โ GLCONVOLUTIONFILTER1D(3G), that's the source/version tag it signs off with ๐ธ no date on this one, she's timeless like that. go forth and convolve, you absolute icon ๐โจ๐
๐ฆ where this page comes from
- opensuse-leap 16.0: Mesa-libGL-devel 24.1.7-160000.3.1 ยท MIT
- opensuse-leap 16.0: Mesa-libGL-devel 24.3.3-160000.3.1 ยท MIT
- opensuse-leap 16.0: Mesa-libGL-devel 24.3.3-160000.3.1 ยท MIT
- opensuse-leap 16.0: Mesa-libGL-devel 24.3.3-160000.3.1 ยท MIT
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms