glConvolutionFilter

Aus DGL Wiki
Version vom 6. Januar 2006, 07:14 Uhr von Dj3hut1 (Diskussion | Beiträge) (Beschreibung Convolution-Filter)

Wechseln zu: Navigation, Suche

glConvolutionFilter

Name

glConvolutionFilter - Legt einen Convolution-Filter fest.


Delphi-Spezifikation

procedure glConvolutionFilter1D(target: TGLenum; internalformat : TGLenum; 
                                width : TGLsizei; 
                                format : TGLenum; _type : TGLenum; 
                                const image : PGLvoid)

procedure glConvolutionFilter2D(target: TGLenum; internalformat : TGLenum; 
                                width : TGLsizei; height : TGLsizei; 
                                format : TGLenum; _type : TGLenum; 
                                const image : PGLvoid)

Parameter

target Ziel des Filter. Muss für glConvolutionFilter1D als GL_CONVOLUTION_1D und für glConvolutionFilter2D als GL_CONVOLUTION_2D gesetzt sein.
internalformat Internes Format der Pixel, auf die der Filter angewendet wird. Nicht akzeptiert werden die Parameter GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24 und GL_DEPTH_COMPONENT32.
width Breite des Filterkernels
height Höhe des Filterkernels (nur bei glConvolutionFilter2D)
format Pixelformat des Filterkernels. Nicht akzeptiert werden die Parameter GL_COLOR_INDEX, GL_STENCIL_INDEX und GL_DEPTH_COMPONENT.
_type Datentyp für Pixelwerte des Filterkernels. Nicht akzeptiert wird der Parameter GL_BITMAP.
image Zeiger auf die Daten des Filterkernels.


Beschreibung

Dieser Befehl setzt einen eindimensionalen (mit glConvolutionFilter1D) oder zweidimensionalen (mit glConvolutionFilter2D) sog. Convolution-Filter (oder auch Filterkernel genannt), welcher bei den OpenGL-Befehlen : glCopyPixels, glDrawPixels, glReadPixels und glTexImage1D bzw. glTexImage2D angewendet wird.

Convolution-Filter

Ein Convolution-Filter ist ein ein- bzw. zweidimensionales Array, dessen Werte Gewichtungen darstellen. Bei Ausführung der Filterung wird das Array Pixel für Pixel auf ein Bild bzw. eine Textur anwendet. Dabei werden die Werte im Array mit den Farben des Bildes multipliziert und zusammenaddiert. Ist z.B. ein 3x3-Array als Filterkernel gesetzt, so wird dieser auf jedes Pixel und seine 8 Nachbarpixel um diesen herum angewendet. Damit lassen sich interessante Effekte wie z.B. Kontraste, Schärfung, Weichzeichnen, Embossing oder Glowing erzielen.


Hinweise

Um den Convolution-Filter zu aktivieren, muß zusätzlich glEnable(GL_CONVOLUTION_1D) bzw. glEnable(GL_CONVOLUTION_2D) aufgerufen werden. Die Anwendung des Convolution-Filters kann mit der Funktion glConvolutionParameter weiterhin beeinflusst werden.


Fehlermeldungen

GL_INVALID_ENUM wird generiert wenn target nicht GL_CONVOLUTION_1D oder GL_CONVOLUTION_2D ist. (entsprechend der benutzten Funktion)

GL_INVALID_ENUM wird generiert wenn internalformat ungültige Werte übergeben wurden. Akzeptiert werden alle interne Pixelformate außer GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24 und GL_DEPTH_COMPONENT32.

GL_INVALID_ENUM wird generiert wenn format ungültige Werte übergeben wurden. Akzeptiert werden alle Formatangaben außer GL_COLOR_INDEX, GL_STENCIL_INDEX und GL_DEPTH_COMPONENT

GL_INVALID_ENUM wird generiert wenn type keine gültige Typkonstante übergeben wurde. Akzeptiert werden alle Typangaben außer GL_BITMAP.

GL_INVALID_VALUE wird generiert wenn die Parameter width und height kleiner als 0 oder größer als die jeweilig maximal zulässigen Werte sind. Mittels [[glGetCon- volutionParameter]] (mit target GL_CONVOLUTION_2D und Parameter GL_MAX_CONVOLUTION_WIDTH oder GL_MAX_CONVOLUTION_HEIGHT) können diese Werte abgefragt werden.

Zugehörige Wertrückgaben

glGetConvolutionFilter
glIsEnabled mit dem Token GL_CONVOLUTION_1D bzw. GL_CONVOLUTION_2D.


Siehe auch

glConvolutionParameter, glCopyConvolutionFilter1D, glCopyConvolutionFilter2D, glGetConvolutionFilter, glGetConvolutionParameter, glSeparableFilter2D