glConvolutionParameter

Aus DGL Wiki
Wechseln zu: Navigation, Suche

glConvolutionParameter

Name

glConvolutionParameterf, glConvolutionParameteri, glConvolutionParameterfv, glConvolutionParameteriv - Setzt Convolution-Parameter


Delphi-Spezifikation

procedure glConvolutionParameterf(target : GLenum; pname : GLenum; params : GLfloat)

procedure glConvolutionParameteri(target : GLenum; pname : GLenum; params : GLint)


Parameter

target Das Ziel für die Comvolution-Parameter. Muss vom Typ GL_CONVOLUTION_1D, GL_CONVOLUTION_2D oder GL_SEPARABLE_2D sein.
pname Der zu setzende Parameter. Muss GL_CONVOLUTION_BORDER_MODE sein.
params Der Parameter. Muss GL_REDUCE, GL_CONSTANT_BORDER oder GL_REPLICATE_BORDER sein.


Delphi-Spezifikation

procedure glConvolutionParameterfv(target : GLenum; pname : GLenum; const  params : PGLfloat)

procedure glConvolutionParameteriv(target : GLenum; pname : GLenum; const  params : PGLint)


Parameter

target Das Ziel für die Comvolution-Parameter. Muss vom Typ GL_CONVOLUTION_1D, GL_CONVOLUTION_2D oder GL_SEPARABLE_2D sein.
pname Der zu setzende Parameter. Muss GL_CONVOLUTION_BORDER_MODE, GL_CONVOLUTION_BORDER_COLOR, GL_CONVOLUTION_FILTER_SCALE oder GL_CONVOLUTION_FILTER_BIAS sein.
params Der Parameter. Wenn pname GL_CONVOLUTION_BORDER_MODE ist, dann muss params GL_REDUCE, GL_CONSTANT_BORDER oder GL_REPLICATE_BORDER sein. Andernfalls muss ein einer vierdimensionaler Vektor (für Rot, Grün, Blau bzw. Alpha) zum Skalieren (wenn pname GL_CONVOLUTION_FILTER_SCALE ist) oder zum Biasing (wenn pname GL_CONVOLUTION_FILTER_BIAS ist) eines Convolution-Filter-Kernels oder zum Setzen der konstanten Rand-Farbe (wenn pname GL_CONVOLUTION_BORDER_COLOR ist) verwendet werden.


Beschreibung

glConvolutionParameter setzt den Wert für einen Convolution-Parameter.


Mit target wählt man den Convolution-Filter, der bearbeitet werden soll. Zulässig sind Variablen mit dem Typ GL_CONVOLUTION_1D, GL_CONVOLUTION_2D oder GL_SEPARABLE_2D.


Mit pname wählt man den Parameter, der verändert werden soll. GL_CONVOLUTION_FILTER_SCALE und GL_CONVOLUTION_FILTER_BIAS beeinflussen die Definition des Convolution-Filter-Kernels (siehe glConvolutionFilter1D, glConvolutionFilter2D, and glSeparableFilter2D für mehr Details). In diesen Fällen ist params ein Array mit vier Werten für Rot, Grün, Blau bzw Alpha. Der Standard-Wert für GL_CONVOLUTION_FILTER_SCALE ist (1, 1, 1, 1), für GL_CONVOLUTION_FILTER_BIAS (0, 0, 0, 0).


Der pname-Wert GL_CONVOLUTION_BORDER_MODE beeinflusst den Convolution-Rand-Modus. Zulässige Modi sind:

GL_REDUCE
Das Bild, das durch die Convolution erzeugt wird, ist kleiner als das ursprüngliche Bild. Wenn die Filter-Breite Wf ist, die Höhe Hf und die ürsprüngliche Breite Ws und Höhe Hs, dann hat das erzeugte Bild die Breite Ws - Wf + 1 und die Höte Hs - Hf + 1. (Wenn diese Operation ein Bild mit der Breite und Höhe 0 erzeugen würde, bleibt das Ergebnis 0, ohne das ein Fehler generiert wird.) Die Koordinaten des fertigen Bildes sind (0, 0).


GL_CONSTANT_BORDER
Das Bild, das durch die Convolution erzeugt wird, hat die gleiche Größe wie das ursprüngliche Bild und wird so generiert, wie wenn das ursprüngliche Bild von Pixeln mit der Farbe - festgelegt durch GL_CONVOLUTION_BORDER_COLOR - umgeben wäre.


GL_REPLICATE_BORDER
Das Bild, das durch die Convolution erzeugt wird, hat die gleiche Größe wie das ursprüngliche Bild und wird so generiert, wie wenn die äußersten Pixel des Rands des Quellbildes wiederholt würden.


Hinweise

glConvolutionParameter steht nur zur Verfügung, wenn GL_ARB_imaging in dem String enthalten ist, der von glGetString mit dem Argument GL_EXTENSIONS zurückgeliefert wird.


In Fällen, in denen Fehler aus den Maßen von ungültigen Bilddimensionen folgen würden, werden die Dimensionen nach der Convolution überprüft, und nicht die Dimensionen des Quellbildes. Zum Beispiel erfordert glTexImage1D ein Bild mit den Maßen 2^n. Wenn der GL_REDUCE Rand-Modus aktiviert ist, dann muss das Quellbild um 1 größer als die finale 2^n-Größe des 1D-Filter-Kernels sein.


Fehlermeldungen

GL_FEHLER wird generiert, wenn....

GL_INVALID_ENUM wird generiert, wenn target einen unzulässigen Wert hat.

GL_INVALID_ENUM wird generiert, wenn pname einen unzulässigen Wert hat.

GL_INVALID_ENUM wird generiert, wenn pname GL_CONVOLUTION_BORDER_MODE ist und params GL_REDUCE, GL_CONSTANT_BORDER oder GL_REPLICATE_BORDER ist.

GL_INVALID_OPERATION wird generiert wenn glConvolutionParameter innerhalb eines glBegin-glEnd Blocks aufgerufen wird.


Zugehörige Wertrückgaben

glGetConvolutionParameter


Siehe auch

glConvolutionFilter1D, glConvolutionFilter2D, glSeparableFilter2D, glGetConvolutionParameter