glHistogram: Unterschied zwischen den Versionen
DGLBot (Diskussion | Beiträge) K (Bot: konvertiere/korrigiere <BR>) |
Flash (Diskussion | Beiträge) K (→Beschreibung: Bild hinzugefügt) |
||
Zeile 29: | Zeile 29: | ||
== Beschreibung == | == Beschreibung == | ||
+ | [[Bild:Histogramm.png|right|framed|Das Histogramm des DGL-Wiki Logos.]] | ||
Wenn '''GL_HISTOGRAM''' aktiviert ist, werden die RGBA-Farbkomponeten zu Histogramm-Tabellenindizes durch Mapping auf den Bereich [0, 1] konvertiert, mit der Breite der Histogramm-Tabelle multipliziert und auf den nächsten Integer-Wert gerundet. Die durch die RGBA-Indizes ausgewählten Tabelleneinträge werden dann erhöht. (Falls das interne Format der Histogramm-Tabelle die Helligkeits-Komponente enthält, bestimmt der von der R-Farbkomponente abgeleitete Index den zu erhöhenden Helligkeits-Tabelleneintrag.) Falls ein Histogramm-Tabelleneintrag über seinen Maximalwert erhöht wird, wird sein Wert undefiniert (Dies ist kein Fehler.) | Wenn '''GL_HISTOGRAM''' aktiviert ist, werden die RGBA-Farbkomponeten zu Histogramm-Tabellenindizes durch Mapping auf den Bereich [0, 1] konvertiert, mit der Breite der Histogramm-Tabelle multipliziert und auf den nächsten Integer-Wert gerundet. Die durch die RGBA-Indizes ausgewählten Tabelleneinträge werden dann erhöht. (Falls das interne Format der Histogramm-Tabelle die Helligkeits-Komponente enthält, bestimmt der von der R-Farbkomponente abgeleitete Index den zu erhöhenden Helligkeits-Tabelleneintrag.) Falls ein Histogramm-Tabelleneintrag über seinen Maximalwert erhöht wird, wird sein Wert undefiniert (Dies ist kein Fehler.) | ||
Zeile 38: | Zeile 39: | ||
<br> | <br> | ||
+ | |||
== Hinweise == | == Hinweise == | ||
'''glHistogram''' ist erst ab GL Version 1.2 oder höher nutzbar. | '''glHistogram''' ist erst ab GL Version 1.2 oder höher nutzbar. |
Version vom 29. August 2006, 15:50 Uhr
Inhaltsverzeichnis
glHistogram
Name
glHistogram - definiert eine Histogramm-Tabelle.
Delphi-Spezifikation
procedure glHistogram(target : TGLenum; width : TGLsizei; internalformat : TGLenum; sink : TGLboolean)
Parameter
target | Das Histogramm, dessen Parameter gesetzt werden. Muss einer der folgenden Konstanten sein: GL_HISTROGRAM oder GL_PROXY_HISTOGRAM. |
---|---|
width | Anzahl der Einträge des Histogramms. Muss eine Zahl vom Typ 2^n (n: Integer) sein. (2,4,8,16,...) |
internalformat | Das interne Format der Histogramm-Daten. 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 Histogramm-Prozess zerstört und es findet kein Zeichnen oder Laden einer Textur statt. Falls GL_FALSE, werden die Pixel nach dem Histogramm-Schritt zum Minmax-Prozess weitergeleitet. |
Beschreibung
Wenn GL_HISTOGRAM aktiviert ist, werden die RGBA-Farbkomponeten zu Histogramm-Tabellenindizes durch Mapping auf den Bereich [0, 1] konvertiert, mit der Breite der Histogramm-Tabelle multipliziert und auf den nächsten Integer-Wert gerundet. Die durch die RGBA-Indizes ausgewählten Tabelleneinträge werden dann erhöht. (Falls das interne Format der Histogramm-Tabelle die Helligkeits-Komponente enthält, bestimmt der von der R-Farbkomponente abgeleitete Index den zu erhöhenden Helligkeits-Tabelleneintrag.) Falls ein Histogramm-Tabelleneintrag über seinen Maximalwert erhöht wird, wird sein Wert undefiniert (Dies ist kein Fehler.)
Histogramme werden nur für RGBA-Pixel ausgeführt (auch wenn diese ursprünglich als Color-Indizes definiert und ins RGBA-Format durch Indextabellen-Lookup konvertiert wurden). Histogramme werden mit glEnable aktiviert und mit glDisable dekaktiviert.
Wenn target GL_HISTOGRAM ist, definiert glHistogram die aktuelle Histogramm-Tabelle mit width Einträgen des durch internalformat angegebenen Formats. Die Einträge werden von 0 bis width - 1 indiziert und alle Einträge werden mit 0 initialisiert. Die Werte in der vorherigen Histogramm-Tabelle, falls welche existierten, gehen verloren. Falls sink GL_TRUE ist, werden die Pixel nach der Histogramm-Operation aufgegeben; keine weiteren Pixelverarbeitungen finden statt und kein Zeichnen, Texturladen oder Zurücklesen von Pixel wird darauf folgen.
Wenn target gleich GL_PROXY_HISTOGRAM ist, berechnet glHistogram alle Zustandsinformationen, als ob die Histogramm-Tabelle definiert werden würde, definiert selbst aber keine neue Tabelle. Falls die abgefragte Histogramm-Tabelle zu groß ist, um unterstützt zu werden, werden die Zustandsinformationen auf 0 gesetzt. Dies sichert eine Möglichkeit zu bestimmen, ob eine Histogramm-Tabelle mit den gegebenen Parameter unterstützt werden kann.
Hinweise
glHistogram ist erst ab GL Version 1.2 oder höher nutzbar.
glHistogram ist nur verfügbar, wenn GL_ARB_imaging von glGetString mit dem Argument GL_EXTENSIONS zurückgeliefert wird.
Der Höchstwert für den Parameter width ist implementierungsabhängig, muß aber mindestens 32 sein.
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 width kleiner als 0 ist oder nicht vom Typ 2^n (n: Integer) ist.
GL_INVALID_VALUE wird generiert, wenn sink weder den Wert GL_TRUE noch GL_FALSE hat.
GL_TABLE_TOO_LARGE wird generiert, wenn das angeforderte Histogramm zu groß und target auf GL_HISTOGRAM gesetzt ist.
GL_INVALID_OPERATION wird generiert, wenn glHistogram innerhalb eines glBegin-glEnd Blocks aufgerufen wird.