glConvolutionFilter: Unterschied zwischen den Versionen
(neu erstellt) |
DGLBot (Diskussion | Beiträge) K (Bot: konvertiere/korrigiere <BR>) |
||
(9 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 2: | Zeile 2: | ||
== Name == | == Name == | ||
− | '''glConvolutionFilter''' - Legt einen Convolution-Filter fest. | + | '''glConvolutionFilter''' - Legt einen [[Convolution-Filter]] fest. |
+ | |||
+ | |||
− | |||
== Delphi-Spezifikation == | == Delphi-Spezifikation == | ||
− | procedure '''glConvolutionFilter1D'''(''target'': TGLenum; ''internalformat'' : TGLenum; ''width'' : TGLsizei; ''format'' : TGLenum; ''_type'' : TGLenum; const ''image'' : PGLvoid) | + | procedure '''glConvolutionFilter1D'''(''target'': TGLenum; ''internalformat'' : TGLenum; |
− | procedure '''glConvolutionFilter2D'''(''target'': TGLenum; ''internalformat'' : TGLenum; ''width'' : TGLsizei; ''height'' : TGLsizei; ''format'' : TGLenum; ''_type'' : TGLenum; const ''image'' : PGLvoid)<br> | + | ''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)<br> | ||
== Parameter == | == Parameter == | ||
Zeile 16: | Zeile 24: | ||
|- | |- | ||
! ''internalformat'' | ! ''internalformat'' | ||
− | | [[ | + | | [[internes Pixelformat|Internes Format der Pixel]], auf die der Filter angewendet wird. Erlaubt sind die Werte 1, 2, 3 und 4 oder folgende Parameter : '''GL_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_RGB, GL_R3_G3_B2, 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''' und '''GL_RGBA16'''. |
|- | |- | ||
! ''width'' | ! ''width'' | ||
Zeile 25: | Zeile 33: | ||
|- | |- | ||
! ''format'' | ! ''format'' | ||
− | | [[ | + | | [[Pixelformat]] des Filterkernels. Erlaubt sind die Parameter '''GL_RGB, GL_RGBA, GL_BGR, GL_BGRA, GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA, GL_LUMINANCE''' und '''GL_LUMINANCE_ALPHA'''. |
|- | |- | ||
! ''_type'' | ! ''_type'' | ||
− | | [[ | + | | [[Pixeldatentyp|Datentyp]] für Pixelwerte des Filterkernels. Erlaubt sind die Parameter '''GL_UNSIGNED_BYTE, GL_BYTE, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT, GL_FLOAT, GL_UNSIGNED_BYTE_3_3_2, GL_UNSIGNED_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''' und '''GL_UNSIGNED_INT_2_10_10_10_REV'''. |
|- | |- | ||
! ''image'' | ! ''image'' | ||
Zeile 34: | Zeile 42: | ||
|} | |} | ||
− | + | ||
+ | |||
== Beschreibung == | == Beschreibung == | ||
− | Dieser Befehl setzt einen eindimensionalen (mit '''glConvolutionFilter1D''') oder zweidimensionalen (mit '''glConvolutionFilter2D''') Convolution-Filter ( | + | Dieser Befehl setzt einen eindimensionalen (mit '''glConvolutionFilter1D''') oder zweidimensionalen (mit '''glConvolutionFilter2D''') sog. [[Convolution-Filter]] (in der Bildverarbeitung auch ''Faltungskern'' genannt), welcher bei den OpenGL-Befehlen : [[glCopyPixels]], [[glDrawPixels]], [[glReadPixels]] und [[glTexImage1D]] bzw. [[glTexImage2D]] angewendet wird. |
+ | Die Funktion erwartet einen Zeiger auf ein Array mit ''width''*''height'' Werten, die denselben Typ haben, wie mit ''_type'' angegeben. | ||
+ | |||
+ | === Auswirkungen auf die RGBA-Komponenten === | ||
+ | Folgende Tabelle gibt an, wie Pixel eines RGBA-Bildes durch solch einen Filter verändert werden. | ||
+ | R<sub>s</sub>, G<sub>s</sub>, B<sub>s</sub> und A<sub>s</sub> repräsentieren die Farbkomponenten des Bildes. R<sub>f</sub>, G<sub>f</sub>, B<sub>f</sub> und A<sub>f</sub> stehen für die Farbkomponenten eines GL_RGB- bzw. GL_RGBA-Filters, während L<sub>f</sub> den Wert eines GL_LUMINANCE- und I<sub>f</sub> den Wert eines GL_INTENSITY-Filters repräsentiert. | ||
+ | |||
+ | <div align="center"> | ||
+ | {| {{Prettytable_B1}} | ||
+ | ! Filterformat | ||
+ | ! Rot | ||
+ | ! Grün | ||
+ | ! Blau | ||
+ | ! Alpha | ||
+ | |- | ||
+ | | GL_ALPHA | ||
+ | | unverändert | ||
+ | | unverändert | ||
+ | | unverändert | ||
+ | | A<sub>s</sub> * A<sub>f</sub> | ||
+ | |- | ||
+ | | GL_LUMINANCE | ||
+ | | R<sub>s</sub> * L<sub>f</sub> | ||
+ | | G<sub>s</sub> * L<sub>f</sub> | ||
+ | | B<sub>s</sub> * L<sub>f</sub> | ||
+ | | unverändert | ||
+ | |- | ||
+ | | GL_LUMINANCE_ALPHA | ||
+ | | R<sub>s</sub> * L<sub>f</sub> | ||
+ | | G<sub>s</sub> * L<sub>f</sub> | ||
+ | | B<sub>s</sub> * L<sub>f</sub> | ||
+ | | A<sub>s</sub> * A<sub>f</sub> | ||
+ | |- | ||
+ | | GL_INTENSITY | ||
+ | | R<sub>s</sub> * I<sub>f</sub> | ||
+ | | G<sub>s</sub> * I<sub>f</sub> | ||
+ | | B<sub>s</sub> * I<sub>f</sub> | ||
+ | | A<sub>s</sub> * I<sub>f</sub> | ||
+ | |- | ||
+ | | GL_RGB | ||
+ | | R<sub>s</sub> * R<sub>f</sub> | ||
+ | | G<sub>s</sub> * G<sub>f</sub> | ||
+ | | B<sub>s</sub> * B<sub>f</sub> | ||
+ | | unverändert | ||
+ | |- | ||
+ | | GL_RGBA | ||
+ | | R<sub>s</sub> * R<sub>f</sub> | ||
+ | | G<sub>s</sub> * G<sub>f</sub> | ||
+ | | B<sub>s</sub> * B<sub>f</sub> | ||
+ | | A<sub>s</sub> * A<sub>f</sub> | ||
+ | |} | ||
<br> | <br> | ||
+ | </div> | ||
+ | |||
== Hinweise == | == Hinweise == | ||
− | Um den | + | Um den Filter zu aktivieren, muß zusätzlich [[glEnable]](GL_CONVOLUTION_1D) bzw. [[glEnable]](GL_CONVOLUTION_2D) aufgerufen werden. |
− | Die Anwendung des | + | Die Anwendung des Filters kann mit der Funktion [[glConvolutionParameter]] weiterhin beeinflusst werden. |
+ | |||
+ | |||
− | |||
== Fehlermeldungen == | == Fehlermeldungen == | ||
'''GL_INVALID_ENUM''' wird generiert wenn ''target'' nicht '''GL_CONVOLUTION_1D''' oder '''GL_CONVOLUTION_2D''' ist. (entsprechend der benutzten Funktion)<br> | '''GL_INVALID_ENUM''' wird generiert wenn ''target'' nicht '''GL_CONVOLUTION_1D''' oder '''GL_CONVOLUTION_2D''' ist. (entsprechend der benutzten Funktion)<br> | ||
Zeile 62: | Zeile 124: | ||
[[glIsEnabled]] mit dem Token '''GL_CONVOLUTION_1D''' bzw. '''GL_CONVOLUTION_2D'''. | [[glIsEnabled]] mit dem Token '''GL_CONVOLUTION_1D''' bzw. '''GL_CONVOLUTION_2D'''. | ||
− | + | ||
+ | |||
== Siehe auch == | == Siehe auch == | ||
[[glConvolutionParameter]], [[glCopyConvolutionFilter1D]], [[glCopyConvolutionFilter2D]], [[glGetConvolutionFilter]], [[glGetConvolutionParameter]], [[glSeparableFilter2D]] | [[glConvolutionParameter]], [[glCopyConvolutionFilter1D]], [[glCopyConvolutionFilter2D]], [[glGetConvolutionFilter]], [[glGetConvolutionParameter]], [[glSeparableFilter2D]] | ||
− | [[Kategorie:GL]] | + | [[Kategorie:GL|ConvolutionFilter]] |
Aktuelle Version vom 22. April 2006, 19:18 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. Erlaubt sind die Werte 1, 2, 3 und 4 oder folgende Parameter : GL_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_RGB, GL_R3_G3_B2, 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 und GL_RGBA16. |
width | Breite des Filterkernels |
height | Höhe des Filterkernels (nur bei glConvolutionFilter2D) |
format | Pixelformat des Filterkernels. Erlaubt sind die Parameter GL_RGB, GL_RGBA, GL_BGR, GL_BGRA, GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA, GL_LUMINANCE und GL_LUMINANCE_ALPHA. |
_type | Datentyp für Pixelwerte des Filterkernels. Erlaubt sind die Parameter GL_UNSIGNED_BYTE, GL_BYTE, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT, GL_FLOAT, GL_UNSIGNED_BYTE_3_3_2, GL_UNSIGNED_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 und GL_UNSIGNED_INT_2_10_10_10_REV. |
image | Zeiger auf die Daten des Filterkernels. |
Beschreibung
Dieser Befehl setzt einen eindimensionalen (mit glConvolutionFilter1D) oder zweidimensionalen (mit glConvolutionFilter2D) sog. Convolution-Filter (in der Bildverarbeitung auch Faltungskern genannt), welcher bei den OpenGL-Befehlen : glCopyPixels, glDrawPixels, glReadPixels und glTexImage1D bzw. glTexImage2D angewendet wird.
Die Funktion erwartet einen Zeiger auf ein Array mit width*height Werten, die denselben Typ haben, wie mit _type angegeben.
Auswirkungen auf die RGBA-Komponenten
Folgende Tabelle gibt an, wie Pixel eines RGBA-Bildes durch solch einen Filter verändert werden. Rs, Gs, Bs und As repräsentieren die Farbkomponenten des Bildes. Rf, Gf, Bf und Af stehen für die Farbkomponenten eines GL_RGB- bzw. GL_RGBA-Filters, während Lf den Wert eines GL_LUMINANCE- und If den Wert eines GL_INTENSITY-Filters repräsentiert.
Filterformat | Rot | Grün | Blau | Alpha |
---|---|---|---|---|
GL_ALPHA | unverändert | unverändert | unverändert | As * Af |
GL_LUMINANCE | Rs * Lf | Gs * Lf | Bs * Lf | unverändert |
GL_LUMINANCE_ALPHA | Rs * Lf | Gs * Lf | Bs * Lf | As * Af |
GL_INTENSITY | Rs * If | Gs * If | Bs * If | As * If |
GL_RGB | Rs * Rf | Gs * Gf | Bs * Bf | unverändert |
GL_RGBA | Rs * Rf | Gs * Gf | Bs * Bf | As * Af |
Hinweise
Um den Filter zu aktivieren, muß zusätzlich glEnable(GL_CONVOLUTION_1D) bzw. glEnable(GL_CONVOLUTION_2D) aufgerufen werden. Die Anwendung des 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