glConvolutionFilter: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Parameter explizit aufgelistet)
K (Bot: konvertiere/korrigiere <BR>)
 
(4 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.
 +
 
 +
 
  
<br>
 
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
 
  procedure '''glConvolutionFilter1D'''(''target'': TGLenum; ''internalformat'' : TGLenum;  
 
  procedure '''glConvolutionFilter1D'''(''target'': TGLenum; ''internalformat'' : TGLenum;  
Zeile 41: Zeile 42:
 
|}
 
|}
  
<br>
+
 
 +
 
  
 
== Beschreibung ==  
 
== 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.
+
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 Convolution-Filter zu aktivieren, muß zusätzlich [[glEnable]](GL_CONVOLUTION_1D) bzw. [[glEnable]](GL_CONVOLUTION_2D) aufgerufen werden.
+
Um den 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.
+
Die Anwendung des Filters kann mit der Funktion [[glConvolutionParameter]] weiterhin beeinflusst werden.
 +
 
 +
 
  
<br>
 
 
== 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 71: Zeile 124:
 
[[glIsEnabled]] mit dem Token '''GL_CONVOLUTION_1D''' bzw. '''GL_CONVOLUTION_2D'''.
 
[[glIsEnabled]] mit dem Token '''GL_CONVOLUTION_1D''' bzw. '''GL_CONVOLUTION_2D'''.
  
<br>
+
 
 +
 
 
== 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, 20:18 Uhr

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