glCopyConvolutionFilter: Unterschied zwischen den Versionen
(neu erstellt) |
DGLBot (Diskussion | Beiträge) K (Bot: konvertiere/korrigiere <BR>) |
||
(Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
= glCopyConvolutionFilter = | = glCopyConvolutionFilter = | ||
− | + | ||
+ | |||
== Name == | == Name == | ||
− | '''glCopyConvolutionFilter''' - | + | '''glCopyConvolutionFilter''' - Kopiert Pixel in einen ein- oder zweidimensionalen [[Convolution-Filter]]. |
+ | |||
+ | |||
− | |||
== Delphi-Spezifikation == | == Delphi-Spezifikation == | ||
− | procedure '''glConvolutionFilter1D'''(''target'' : TGLenum; ''internalformat'' : TGLenum; ''x'' : TGLint; | + | procedure '''glConvolutionFilter1D'''(''target'' : TGLenum; ''internalformat'' : TGLenum; |
− | + | ''x'' : TGLint; ''y'' : TGLint; ''width'' : TGLsizei) | |
− | procedure '''glConvolutionFilter2D'''(''target'' : TGLenum; ''internalformat'' : TGLenum; ''x'' : TGLint; | + | procedure '''glConvolutionFilter2D'''(''target'' : TGLenum; ''internalformat'' : TGLenum; |
− | + | ''x'' : TGLint; ''y'' : TGLint; | |
+ | ''width'' : TGLsizei, ''height'' : TGLsizei) | ||
<br> | <br> | ||
Zeile 36: | Zeile 39: | ||
− | + | ||
+ | |||
== Beschreibung == | == Beschreibung == | ||
− | + | '''glCopyConvolutionFilter2D''' ('''glCopyConvolutionFilter1D''') definiert einen zweidimensionalen (eindimensionalen) Convolution-Faltungskern mit Pixel aus dem aktuellen '''GL_READ_BUFFER''' (nicht aus dem Hauptspeicher, so wie es bei [[glConvolutionFilter2D]] der Fall ist). | |
− | Das Bildschirm- | + | Das am Bildschirm ausgerichtete Pixel-Rechteck mit der unteren, linken Ecke bei (''x'', ''y''), der Breite ''width'' und der Höhe ''height'' (bei '''glCopyConvolutionFilter1D''' ist die Höhe 1) wird benutzt, um einen Convolution-Filter zu definieren. Falls irgendeiner der Pixel in diesem Bereich ausserhalb des Fensters ist, welches mit dem [[Renderkontext]] assoziert wird, sind die Werte geltend für diese Pixel undefiniert. |
− | '' | + | Die Pixel in dem Rechteck werden genauso verarbeitet, als wenn [[glReadPixels]] mit dem gesetzten Format RGBA aufgerufen wäre, nur dass der Prozess vor der letzten Konvertierung gestoppt wird. Danach werden die R, G, B, und A-Komponenten aller Pixel in beiden Arrays durch die vier 2D- bzw. 1D-'''GL_CONVOLUTION_FILTER_SCALE'''-Parameterwerte skaliert und durch die vier 2D- bzw. 1D-'''GL_CONVOLUTION_FILTER_BIAS'''-Parameterwerte verschoben. (Die Skalierungs- und Biasparameter werden mit der Funktion [[glConvolutionParameter]], dem Ziel '''GL_CONVOLUTION_2D'''('''GL_CONVOLUTION_1D''') und den Parametern '''GL_CONVOLUTION_FILTER_SCALE''' und '''GL_CONVOLUTION_FILTER_BIAS''' gesetzt. Die Parameter selbst sind vierwertige Vektoren, welche auf die Rot-, Grün-, Blau- und Alphakomponenten angewendet werden.) Die R, G, B, und A-Werte werden während des ganzen Prozesses nicht auf den Bereich [0,1] gemappt. |
− | |||
− | Die Pixel | + | Jeder Pixel wird dann intern in das mit ''internalformat'' angegebene Format konvertiert. Diese Konvertierung mappt die Komponentenwerte der Pixel (R, G, B, and A) einfach auf die Werte, welche zum internen Format gehören (Rot, Grün, Blau, Alpha, Helligkeit und Intensität). Das Mapping geschieht folgendermassen: |
+ | |||
+ | <div align="center"> | ||
+ | {| {{Prettytable_B1}} | ||
+ | ! Internes Format | ||
+ | ! Rot | ||
+ | ! Grün | ||
+ | ! Blau | ||
+ | ! Alpha | ||
+ | ! Helligkeit | ||
+ | ! Intensität | ||
+ | |- | ||
+ | | GL_LUMINANCE | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | R | ||
+ | | | ||
+ | |- | ||
+ | | GL_LUMINANCE_ALPHA | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | A | ||
+ | | R | ||
+ | | | ||
+ | |- | ||
+ | | GL_INTENSITY | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | R | ||
+ | |- | ||
+ | | GL_RGB | ||
+ | | R | ||
+ | | G | ||
+ | | B | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | GL_RGBA | ||
+ | | R | ||
+ | | G | ||
+ | | B | ||
+ | | A | ||
+ | | | ||
+ | | | ||
+ | |} | ||
+ | </div> | ||
+ | |||
+ | Die Rot-, Grün-, Blau-, Alpha-, Helligkeits-, und/oder Intensitäts-Komponenten der resultierenden Pixel werden im Fließkomma-Format gespeichert. | ||
+ | |||
+ | Die Pixelreihenfolge ist so, dass die tiefen x-Bildschirmkoordinaten den tiefen i Filterbild-Koordinaten entsprechen, und die tiefen y-Bildschirmkoordinaten den tiefen j Filterbild-Koordinaten entsprechen. | ||
+ | |||
+ | Beachte, dass, nachdem eine Convolution-Operation ausgeführt wird, die resultierenden Farbkomponenten auch durch ihre entsprechenden '''GL_POST_CONVOLUTION_c_SCALE'''-Parameter skaliert und ihre '''GL_POST_CONVOLUTION_c_BIAS'''-Parameter verschoben werden (wobei c die Werte '''RED''', '''GREEN''', '''BLUE''' und '''ALPHA''' annimmt). Diese Parameter werden durch die Funktion [[glPixelTransfer]] gesetzt. | ||
− | |||
− | |||
== Hinweise == | == Hinweise == | ||
'''glCopyConvolutionFilter1D''' und '''glCopyConvolutionFilter2D''' sind ab OpenGL Version 1.2 verfügbar. | '''glCopyConvolutionFilter1D''' und '''glCopyConvolutionFilter2D''' sind ab OpenGL Version 1.2 verfügbar. | ||
+ | |||
+ | '''glCopyConvolutionFilter1D''' und '''glCopyConvolutionFilter2D''' sind nur verfügbar, falls '''GL_ARB_imaging''' beim Aufruf der Funktion [[glGetString]] mit dem Argument '''GL_EXTENSIONS''' zurückgegeben wird. | ||
== Fehlermeldungen == | == Fehlermeldungen == | ||
Zeile 61: | Zeile 122: | ||
<br> | <br> | ||
− | '''GL_INVALID_VALUE''' wird generiert, wenn die Parameter width und height | + | '''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 [[glGetConvolutionParameter]] (mit target '''GL_CONVOLUTION_1D''' und Parameter '''GL_MAX_CONVOLUTION_WIDTH''' oder '''GL_CONVOLUTION_2D''' und Parameter '''GL_MAX_CONVOLUTION_WIDTH''' oder '''GL_MAX_CONVOLUTION_HEIGHT''') können diese Werte abgefragt werden.<br> |
'''GL_INVALID_OPERATION''' wird generiert, wenn '''glCopyConvolutionFilter1D''' oder '''glCopyConvolutionFilter2D''' innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird. | '''GL_INVALID_OPERATION''' wird generiert, wenn '''glCopyConvolutionFilter1D''' oder '''glCopyConvolutionFilter2D''' innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird. | ||
− | + | ||
+ | |||
== Zugehörige Wertrückgaben == | == Zugehörige Wertrückgaben == | ||
Zeile 71: | Zeile 133: | ||
[[glGetConvolutionParameter]]<br> | [[glGetConvolutionParameter]]<br> | ||
− | + | ||
+ | |||
== Siehe auch == | == Siehe auch == | ||
− | [[glConvolutionFilter1D]], [[glConvolutionFilter2D]], [[glConvolutionParameter]], [[glGetConvolutionFilter]], [[glGetConvolutionParameter]], [[glSeparableFilter2D]] | + | [[glConvolutionFilter1D]], [[glConvolutionFilter2D]], [[glConvolutionParameter]], [[glGetConvolutionFilter]], [[glGetConvolutionParameter]], [[glPixelTransfer]], [[glSeparableFilter2D]] |
− | [[Kategorie:GL| | + | [[Kategorie:GL|CopyConvolutionFilter]] |
Aktuelle Version vom 22. April 2006, 19:18 Uhr
Inhaltsverzeichnis
glCopyConvolutionFilter
Name
glCopyConvolutionFilter - Kopiert Pixel in einen ein- oder zweidimensionalen Convolution-Filter.
Delphi-Spezifikation
procedure glConvolutionFilter1D(target : TGLenum; internalformat : TGLenum; x : TGLint; y : TGLint; width : TGLsizei) procedure glConvolutionFilter2D(target : TGLenum; internalformat : TGLenum; x : TGLint; y : TGLint; width : TGLsizei, height : TGLsizei)
Parameter
target | Gibt den Zielfilter an. Muss für glCopyConvolutionFilter1D als GL_CONVOLUTION_1D und für glCopyConvolutionFilter2D als GL_CONVOLUTION_2D gesetzt sein. |
---|---|
internalformat | Format, in das die Daten aus dem Framebuffer konvertiert werden sollen. Möglich Werte sind : 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. |
x, y | Gibt die Fenster-Koordinaten der linken, unteren Ecke des zu kopierenden Pixel-Rechtecks an. |
width | Gibt die Breite des zu kopierenden Pixel-Rechtecks an. |
height | Gibt bei glCopyConvolutionFilter2D die Höhe des zu kopierenden Pixel-Rechtecks an. |
Beschreibung
glCopyConvolutionFilter2D (glCopyConvolutionFilter1D) definiert einen zweidimensionalen (eindimensionalen) Convolution-Faltungskern mit Pixel aus dem aktuellen GL_READ_BUFFER (nicht aus dem Hauptspeicher, so wie es bei glConvolutionFilter2D der Fall ist).
Das am Bildschirm ausgerichtete Pixel-Rechteck mit der unteren, linken Ecke bei (x, y), der Breite width und der Höhe height (bei glCopyConvolutionFilter1D ist die Höhe 1) wird benutzt, um einen Convolution-Filter zu definieren. Falls irgendeiner der Pixel in diesem Bereich ausserhalb des Fensters ist, welches mit dem Renderkontext assoziert wird, sind die Werte geltend für diese Pixel undefiniert.
Die Pixel in dem Rechteck werden genauso verarbeitet, als wenn glReadPixels mit dem gesetzten Format RGBA aufgerufen wäre, nur dass der Prozess vor der letzten Konvertierung gestoppt wird. Danach werden die R, G, B, und A-Komponenten aller Pixel in beiden Arrays durch die vier 2D- bzw. 1D-GL_CONVOLUTION_FILTER_SCALE-Parameterwerte skaliert und durch die vier 2D- bzw. 1D-GL_CONVOLUTION_FILTER_BIAS-Parameterwerte verschoben. (Die Skalierungs- und Biasparameter werden mit der Funktion glConvolutionParameter, dem Ziel GL_CONVOLUTION_2D(GL_CONVOLUTION_1D) und den Parametern GL_CONVOLUTION_FILTER_SCALE und GL_CONVOLUTION_FILTER_BIAS gesetzt. Die Parameter selbst sind vierwertige Vektoren, welche auf die Rot-, Grün-, Blau- und Alphakomponenten angewendet werden.) Die R, G, B, und A-Werte werden während des ganzen Prozesses nicht auf den Bereich [0,1] gemappt.
Jeder Pixel wird dann intern in das mit internalformat angegebene Format konvertiert. Diese Konvertierung mappt die Komponentenwerte der Pixel (R, G, B, and A) einfach auf die Werte, welche zum internen Format gehören (Rot, Grün, Blau, Alpha, Helligkeit und Intensität). Das Mapping geschieht folgendermassen:
Internes Format | Rot | Grün | Blau | Alpha | Helligkeit | Intensität |
---|---|---|---|---|---|---|
GL_LUMINANCE | R | |||||
GL_LUMINANCE_ALPHA | A | R | ||||
GL_INTENSITY | R | |||||
GL_RGB | R | G | B | |||
GL_RGBA | R | G | B | A |
Die Rot-, Grün-, Blau-, Alpha-, Helligkeits-, und/oder Intensitäts-Komponenten der resultierenden Pixel werden im Fließkomma-Format gespeichert.
Die Pixelreihenfolge ist so, dass die tiefen x-Bildschirmkoordinaten den tiefen i Filterbild-Koordinaten entsprechen, und die tiefen y-Bildschirmkoordinaten den tiefen j Filterbild-Koordinaten entsprechen.
Beachte, dass, nachdem eine Convolution-Operation ausgeführt wird, die resultierenden Farbkomponenten auch durch ihre entsprechenden GL_POST_CONVOLUTION_c_SCALE-Parameter skaliert und ihre GL_POST_CONVOLUTION_c_BIAS-Parameter verschoben werden (wobei c die Werte RED, GREEN, BLUE und ALPHA annimmt). Diese Parameter werden durch die Funktion glPixelTransfer gesetzt.
Hinweise
glCopyConvolutionFilter1D und glCopyConvolutionFilter2D sind ab OpenGL Version 1.2 verfügbar.
glCopyConvolutionFilter1D und glCopyConvolutionFilter2D sind nur verfügbar, falls GL_ARB_imaging beim Aufruf der Funktion glGetString mit dem Argument GL_EXTENSIONS zurückgegeben wird.
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.
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 glGetConvolutionParameter (mit target GL_CONVOLUTION_1D und Parameter GL_MAX_CONVOLUTION_WIDTH oder GL_CONVOLUTION_2D und Parameter GL_MAX_CONVOLUTION_WIDTH oder GL_MAX_CONVOLUTION_HEIGHT) können diese Werte abgefragt werden.
GL_INVALID_OPERATION wird generiert, wenn glCopyConvolutionFilter1D oder glCopyConvolutionFilter2D innerhalb eines glBegin-glEnd Blocks aufgerufen wird.
Zugehörige Wertrückgaben
glGetConvolutionFilter
glGetConvolutionParameter
Siehe auch
glConvolutionFilter1D, glConvolutionFilter2D, glConvolutionParameter, glGetConvolutionFilter, glGetConvolutionParameter, glPixelTransfer, glSeparableFilter2D