glMinmax: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(neu erstellt)
 
K (Bot: konvertiere/korrigiere <BR>)
 
(Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt)
Zeile 1: Zeile 1:
 
= glMinmax =
 
= glMinmax =
  
<br>
+
 
 +
 
 
== Name ==
 
== Name ==
'''glMinmax''' - berechnet die minimalen und maximalen Pixelwerte eines Pixelrechtecks.
+
'''glMinmax''' - definiert die Minmax-Tabelle.
  
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
 
  procedure '''glMinmax'''(''target'' : TGLenum; ''internalformat'' : TGLenum;
 
  procedure '''glMinmax'''(''target'' : TGLenum; ''internalformat'' : TGLenum;
                    ''sink'' : TGLboolean)
+
                    ''sink'' : TGLboolean)
  
  
Zeile 14: Zeile 15:
 
{| border="1" rules="all"
 
{| border="1" rules="all"
 
! ''target''  
 
! ''target''  
| Muss '''GL_MINMAX''' sein.
+
| Die Minmax-Tabelle, dessen Parameter gesetzt werden. Muss '''GL_MINMAX''' sein.
 
|-
 
|-
 
! ''internalformat''  
 
! ''internalformat''  
| Format der Pixel, für die Minmax-Werte berechnet werden sollen. Zulässige 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_R3_G3_B2''', '''GL_RGB''', '''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'''.
+
| Das Format der Einträge der Minmax-Tabelle. Zulässige 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_R3_G3_B2''', '''GL_RGB''', '''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'''.
 
|-
 
|-
 
! ''sink''  
 
! ''sink''  
| Flag, ob die Pixel nach der Minmax-Operation gerendert werden sollen.
+
| Falls '''GL_TRUE''', werden die Pixel durch den Minmax-Prozess zerstört und kein Zeichnen oder Texturladen findet statt. Falls '''GL_FALSE''', werden die Pixel zum letzten Konvertierungs-Prozess nach Minmax weitergeleitet.
 
|}
 
|}
  
 
== Beschreibung ==  
 
== Beschreibung ==  
Mit '''glMinmax''' kann man die Eigenschaften der Minmax-Operation festlegen. ''target'' muss dabei immer '''GL_MINMAX''' sein. Der Parameter ''internalformat'' gibt an, für welche Farbkomponenten die Minmax-Werte berechnet werden sollen. 1, 2, 3 und 4 sind im Gegensatz zum gleichen Parameter bei [[glTexImage]] keine zulässigen Werte für ''internalformat'' und erzeugen einen '''GL_INVALID_ENUM'''-Fehler.
+
Wenn '''GL_MINMAX''' aktiviert ist, werden die RGBA-Komponenten der eintreffenden Pixel mit dem Minimal- und Maximalwert für jede Komponente verglichen, welche in der zweielementigen Minmax-Tabelle gespeichert werden. (Das erste Element speichert das Minimum und das zweite Element speichert das Maximum.) Falls eine Pixelkomponente grösser als die entsprechende Komponente im Maximumelement ist, dann wird das Maximumelement mit dem Wert der Pixelkomponente aktualisiert. Falls eine Pixelkomponente kleiner als die entsprechende Komponente im Minimumelement ist, dann wird das Minimumelement mit dem Wert der Pixelkomponente aktualisiert. (Enthält in beiden Fällen das interne Format der Minmax-Tabelle die Helligkeits-Komponente, wird die R-Farbkomponente der eintreffenden Pixel für den Vergleich benutzt.) Die Inhalte der Minmax-Tabelle können zu einem späteren Zeitpunkt durch den Aufruf von [[glGetMinmax]] zurückgeliefert werden. Die Minmax-Operation wird durch den Aufruf von [[glEnable]] oder [[glDisable]] mit dem Argument '''GL_MINMAX''' aktiviert bzw. deaktivert.
  
Mit dem Parameter ''sink'' wird bestimmt, wie nach der Minmax-Operation fortgefahren werden werden soll. Bei '''GL_TRUE''' werden die Pixel nicht mehr in der [[Imaging-Pipeling|Pipeline]] weitergeleitet, bei '''GL_FALSE''' weiter in den Renderprozess geschickt.
+
'''glMinmax''' definiert die aktuelle Minmax-Tabelle neu, um Einträge zu haben, die durch ''internalformat'' spezifiziert werden. Das maximale Element wird mit dem kleinstmöglichstem Komponentenwert initialisiert und das minimale Element wird mit dem grösstmöglichstem Komponentenwert initialisiert. Die Werte in der vorhergehenden Minmax-Tabelle, falls existent, gehen verloren. Falls ''sink'' '''GL_TRUE''' ist, werden die Pixel nach Minmax aufgegeben; es findet keine weitere Verarbeitung der Pixel statt, und kein Zeichnen, Texturladen oder Zurücklesen von Pixel wird ausgeführt.
 
 
Nach Aufruf der Funktion wird eine interne Minmax-Tabelle erzeugt.
 
Diese Tabelle enthält immer genau zwei Einträge, um die, durch ''internalformat'' festgelegten, minimalen und maximalen Werte für die Farbkomponenten (als float-Werte) einzutragen.
 
 
 
Nach Erzeugung der Tabelle werden alle Minimalwerte auf ihr Maximum und alle Maximalwerte auf ihr Minimum gesetzt.
 
 
 
Zusätzlich wird für die Tabelle nocheinmal das interne Format und das ''sink''-Flag abgespeichert (Defaultwerte sind '''GL_RGBA''' und '''GL_FALSE''').
 
 
 
Mit [[glGetMinmax]] kann der Inhalt der Minmax-Tabelle jederzeit abgefragt werden.
 
 
 
Mit [[glResetMinmax]] ist es möglich, die Einträge der Tabelle auf ihre Initialwerte zurückzusetzen.
 
  
 
== Hinweise ==
 
== Hinweise ==
Zeile 57: Zeile 47:
 
'''GL_INVALID_OPERATION''' wird generiert, wenn '''glMinmax''' innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird.  
 
'''GL_INVALID_OPERATION''' wird generiert, wenn '''glMinmax''' innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird.  
  
<br>
+
 
 +
 
  
 
== Zugehörige Wertrückgaben ==
 
== Zugehörige Wertrückgaben ==

Aktuelle Version vom 22. April 2006, 19:22 Uhr

glMinmax

Name

glMinmax - definiert die Minmax-Tabelle.

Delphi-Spezifikation

procedure glMinmax(target : TGLenum; internalformat : TGLenum;
                    sink : TGLboolean)


Parameter

target Die Minmax-Tabelle, dessen Parameter gesetzt werden. Muss GL_MINMAX sein.
internalformat Das Format der Einträge der Minmax-Tabelle. Zulässige 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_R3_G3_B2, GL_RGB, 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.
sink Falls GL_TRUE, werden die Pixel durch den Minmax-Prozess zerstört und kein Zeichnen oder Texturladen findet statt. Falls GL_FALSE, werden die Pixel zum letzten Konvertierungs-Prozess nach Minmax weitergeleitet.

Beschreibung

Wenn GL_MINMAX aktiviert ist, werden die RGBA-Komponenten der eintreffenden Pixel mit dem Minimal- und Maximalwert für jede Komponente verglichen, welche in der zweielementigen Minmax-Tabelle gespeichert werden. (Das erste Element speichert das Minimum und das zweite Element speichert das Maximum.) Falls eine Pixelkomponente grösser als die entsprechende Komponente im Maximumelement ist, dann wird das Maximumelement mit dem Wert der Pixelkomponente aktualisiert. Falls eine Pixelkomponente kleiner als die entsprechende Komponente im Minimumelement ist, dann wird das Minimumelement mit dem Wert der Pixelkomponente aktualisiert. (Enthält in beiden Fällen das interne Format der Minmax-Tabelle die Helligkeits-Komponente, wird die R-Farbkomponente der eintreffenden Pixel für den Vergleich benutzt.) Die Inhalte der Minmax-Tabelle können zu einem späteren Zeitpunkt durch den Aufruf von glGetMinmax zurückgeliefert werden. Die Minmax-Operation wird durch den Aufruf von glEnable oder glDisable mit dem Argument GL_MINMAX aktiviert bzw. deaktivert.

glMinmax definiert die aktuelle Minmax-Tabelle neu, um Einträge zu haben, die durch internalformat spezifiziert werden. Das maximale Element wird mit dem kleinstmöglichstem Komponentenwert initialisiert und das minimale Element wird mit dem grösstmöglichstem Komponentenwert initialisiert. Die Werte in der vorhergehenden Minmax-Tabelle, falls existent, gehen verloren. Falls sink GL_TRUE ist, werden die Pixel nach Minmax aufgegeben; es findet keine weitere Verarbeitung der Pixel statt, und kein Zeichnen, Texturladen oder Zurücklesen von Pixel wird ausgeführt.

Hinweise

glMinmax ist erst ab GL Version 1.2 oder höher nutzbar.

glMinmax ist nur verfügbar, wenn GL_ARB_imaging von glGetString mit dem Argument GL_EXTENSIONS zurückgeliefert wird.

Die Minmax-Operation wird erst durch den Aufruf von glEnable(GL_MINMAX) aktiviert.

Die Minmax-Operation wird nur auf RGBA-Komponenten angewendet.

Fehlermeldungen

GL_INVALID_ENUM wird generiert, wenn target keinen der zulässigen Werte hat.

GL_INVALID_ENUM wird generiert, wenn internalformat keinen der zulässigen Werte hat.

GL_INVALID_VALUE wird generiert, wenn sink weder den Wert GL_TRUE, noch GL_FALSE hat.

GL_INVALID_OPERATION wird generiert, wenn glMinmax innerhalb eines glBegin-glEnd Blocks aufgerufen wird.



Zugehörige Wertrückgaben

glGetMinmaxParameter

Siehe auch

glGetMinmax, glResetMinmax