glHistogram

Aus DGL Wiki
Version vom 7. April 2006, 18:20 Uhr von Dj3hut1 (Diskussion | Beiträge) (falscher Hinweis korrigiert)

Wechseln zu: Navigation, Suche

glHistogram


Name

glHistogram - definiert, wie die Daten eines Histogramms gespeichert werden sollen.


Delphi-Spezifikation

procedure glHistogram(target : TGLenum; width : TGLsizei; internalformat : TGLenum;
                      sink : TGLboolean)


Parameter

target 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 Flag, ob die Pixel nach der Histogramm-Operation in den nächsten Prozess der Imaging Pipeline geschickt werden sollen (glMinmax).

Beschreibung

glHistogram kann für zwei Methoden verwendet werden: Ist target auf GL_PROXY_HISTOGRAM gesetzt, so wird geprüft, ob genügend Ressourcen zur Verfügung stehen, um intern ein Histogramm mit der angegebenen Grösse, dem Format und der Auflösung abzuspeichern. Ist dies nicht der Fall, so werden all diese Werte auf 0 gesetzt.

Die Ergebnisse des Proxy-Kommandos können mit glGetHistogramParameter abgefragt werden.

Übergibt man GL_HISTOGRAM an target, werden die Parameter für das Histogramm gesetzt. internalformat gibt dabei an, für welche Komponenten des Bildes ein Histogramm erstellt werden soll. Alle Werte des Histogramms werden auf 0 gesetzt. Alle mit glHistogram vorher gesetzten Histogramme gehen verloren.

width gibt an, wieviel Einträge das Histogramm haben soll. Die Farbwerte des Bildes werden dann in dementsprechende Bereiche eingeteilt und statistisch ausgewertet. Genauer : Falls die Breite nicht 0 ist werden die Farbwerte zuerst auf den Bereich [0,1] gemapped, mit width - 1 multipliziert und auf den nächsten Integerwert gerundet. Beispiel : wird bei einer Farbauflösung von 8 Bit (256 verschiedene Farbwerte möglich) der Wert 64 für width gesetzt, so werden für das Histogramm immer 256 / 64 = 4 Farbkomponenten zusammen als eine gezählt.

Mit dem Parameter sink wird bestimmt, wie nach der Histogramm-Operation fortgefahren werden werden soll. Bei GL_TRUE werden die Pixel in der Pipeline nicht weitergeleitet, ansonsten werden sie anschliessend mit dem Befehl glGetMinmax ausgewertet.

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.

Histogramme können nur auf RGBA-Komponenten angewendet werden.

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