glConvolutionFilter: Unterschied zwischen den Versionen
Flash (Diskussion | Beiträge) K (→Delphi-Spezifikation) |
(→Beschreibung Convolution-Filter) |
||
Zeile 44: | Zeile 44: | ||
== Beschreibung == | == Beschreibung == | ||
− | Dieser Befehl setzt einen eindimensionalen (mit '''glConvolutionFilter1D''') oder zweidimensionalen (mit '''glConvolutionFilter2D''') Convolution-Filter (Filterkernel), welcher bei den OpenGL-Befehlen : [[glCopyPixels]], [[glDrawPixels]], [[glReadPixels]] und [[glTexImage1D]] bzw. [[glTexImage2D]] angewendet wird. | + | 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. | ||
<br> | <br> | ||
+ | |||
== Hinweise == | == Hinweise == | ||
Um den Convolution-Filter zu aktivieren, muß zusätzlich [[glEnable]](GL_CONVOLUTION_1D) bzw. [[glEnable]](GL_CONVOLUTION_2D) aufgerufen werden. | Um den Convolution-Filter zu aktivieren, muß zusätzlich [[glEnable]](GL_CONVOLUTION_1D) bzw. [[glEnable]](GL_CONVOLUTION_2D) aufgerufen werden. |
Version vom 6. Januar 2006, 06:14 Uhr
Inhaltsverzeichnis
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