glHistogram: Unterschied zwischen den Versionen
(neu erstellt) |
Flash (Diskussion | Beiträge) K (→Parameter) |
||
Zeile 18: | Zeile 18: | ||
|- | |- | ||
! ''width'' | ! ''width'' | ||
− | | Anzahl der Einträge des Histogramms. Muss eine Zahl vom Typ 2^n (n: Integer) sein. | + | | Anzahl der Einträge des Histogramms. Muss eine Zahl vom Typ 2^n (n: Integer) sein. (2,4,8,16,...) |
|- | |- | ||
! ''internalformat'' | ! ''internalformat'' | ||
Zeile 26: | Zeile 26: | ||
| Flag, ob die Pixel nach der Histogramm-Operation in den nächsten Prozess der [[Imaging Pipeline]] geschickt werden sollen ([[glMinmax]]). | | Flag, ob die Pixel nach der Histogramm-Operation in den nächsten Prozess der [[Imaging Pipeline]] geschickt werden sollen ([[glMinmax]]). | ||
|} | |} | ||
− | |||
== Beschreibung == | == Beschreibung == |
Version vom 7. April 2006, 12:39 Uhr
Inhaltsverzeichnis
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
glDrawElements ist erst ab GL Version 1.2 oder höher nutzbar und ersetzt die Extension EXT_histogram.
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.