glHistogram

Aus DGL Wiki
Wechseln zu: Navigation, Suche

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

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.)

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.


Zugehörige Wertrückgaben

glGetHistogramParameter

Siehe auch

glGetHistogram, glResetHistogram

Hintergrundwissen: Histogram