1991-2006 Silicon Graphics, Inc.
glConvolutionParameter 3G
glConvolutionParameter set convolution parameters

## C Specification

void `glConvolutionParameterf` GLenum target GLenum pname GLfloat params void `glConvolutionParameteri` GLenum target GLenum pname GLint params

## Parameters

target

  The target for the convolution parameter. Must be one of `GL_CONVOLUTION_1D`, `GL_CONVOLUTION_2D`, or `GL_SEPARABLE_2D`.

pname

  The parameter to be set. Must be `GL_CONVOLUTION_BORDER_MODE`.

params

  The parameter value. Must be one of `GL_REDUCE`, `GL_CONSTANT_BORDER`, `GL_REPLICATE_BORDER`.

## C Specification

void `glConvolutionParameterfv` GLenum target GLenum pname const GLfloat * params void `glConvolutionParameteriv` GLenum target GLenum pname const GLint * params

## Parameters

target

  The target for the convolution parameter. Must be one of `GL_CONVOLUTION_1D`, `GL_CONVOLUTION_2D`, or `GL_SEPARABLE_2D`.

pname

  The parameter to be set. Must be one of `GL_CONVOLUTION_BORDER_MODE`, `GL_CONVOLUTION_BORDER_COLOR`, `GL_CONVOLUTION_FILTER_SCALE`, or `GL_CONVOLUTION_FILTER_BIAS`.

params

  The parameter value. If pnamev is `GL_CONVOLUTION_BORDER_MODE`, paramsv must be one of `GL_REDUCE`, `GL_CONSTANT_BORDER`, or `GL_REPLICATE_BORDER`. Otherwise, must be a vector of four values (for red, green, blue, and alpha, respectively) to be used for scaling (when pnamev is `GL_CONVOLUTION_FILTER_SCALE`), or biasing (when pnamev is `GL_CONVOLUTION_FILTER_BIAS`) a convolution filter kernel or setting the constant border color (when pnamev is `GL_CONVOLUTION_BORDER_COLOR`.

## Description

`glConvolutionParameter` sets the value of a convolution parameter.

target selects the convolution filter to be affected: `GL_CONVOLUTION_1D`, `GL_CONVOLUTION_2D`, or `GL_SEPARABLE_2D` for the 1D, 2D, or separable 2D filter, respectively.

pname selects the parameter to be changed. `GL_CONVOLUTION_FILTER_SCALE` and `GL_CONVOLUTION_FILTER_BIAS` affect the definition of the convolution filter kernel; see glConvolutionFilter1D, glConvolutionFilter2D, and glSeparableFilter2D for details. In these cases, paramsv is an array of four values to be applied to red, green, blue, and alpha values, respectively. The initial value for `GL_CONVOLUTION_FILTER_SCALE` is (1, 1, 1, 1), and the initial value for `GL_CONVOLUTION_FILTER_BIAS` is (0, 0, 0, 0).

A pname value of `GL_CONVOLUTION_BORDER_MODE` controls the convolution border mode. The accepted modes are:

`GL_REDUCE`

  The image resulting from convolution is smaller than the source image. If the filter width is Wf and height is Hf, and the source image width is Ws and height is Hs, then the convolved image width will be Ws - Wf + 1 and height will be Hs - Hf + 1 . (If this reduction would generate an image with zero or negative width and/or height, the output is simply null, with no error generated.) The coordinates of the image resulting from convolution are zero through Ws - Wf in width and zero through Hs - Hf in height.

`GL_CONSTANT_BORDER`

  The image resulting from convolution is the same size as the source image, and processed as if the source image were surrounded by pixels with their color specified by the `GL_CONVOLUTION_BORDER_COLOR`.

`GL_REPLICATE_BORDER`

  The image resulting from convolution is the same size as the source image, and processed as if the outermost pixel on the border of the source image were replicated.

## Notes

`glConvolutionParameter` is present only if `ARB_imaging` is returned when glGetString is called with an argument of `GL_EXTENSIONS`.

In cases where errors can result from the specification of invalid image dimensions, it is the dimensions after convolution that are tested, not the dimensions of the source image. For example, glTexImage1D requires power-of-two image size. When `GL_REDUCE` border mode is in effect, the source image must be larger than the final power-of-two size by one less than the size of the 1D filter kernel.

## Errors

`GL_INVALID_ENUM` is generated if target is not one of the allowable values.

`GL_INVALID_ENUM` is generated if pname is not one of the allowable values.

`GL_INVALID_ENUM` is generated if pname is `GL_CONVOLUTION_BORDER_MODE` and params is not one of `GL_REDUCE`, `GL_CONSTANT_BORDER`, or `GL_REPLICATE_BORDER`.

`GL_INVALID_OPERATION` is generated if `glConvolutionParameter` is executed between the execution of glBegin and the corresponding execution of glEnd.

## Associated Gets

glGetConvolutionParameter

## See Also

glConvolutionFilter1D, glConvolutionFilter2D, glSeparableFilter2D, glGetConvolutionParameter

## Copyright

Copyright 1991-2006 Silicon Graphics, Inc. This document is licensed under the SGI Free Software B License. For details, see http://oss.sgi.com/projects/FreeB/.