glHistogram: Unterschied zwischen den Versionen
K (falscher Hinweis korrigiert) |
Flash (Diskussion | Beiträge) (→Siehe auch) |
||
(3 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
= glHistogram = | = glHistogram = | ||
− | + | ||
+ | |||
== Name == | == Name == | ||
− | '''glHistogram''' - definiert | + | '''glHistogram''' - definiert eine [[Histogramm]]-Tabelle. |
== Delphi-Spezifikation == | == Delphi-Spezifikation == | ||
− | procedure '''glHistogram'''(''target'' : TGLenum; ''width'' : TGLsizei; ''internalformat'' : TGLenum; | + | procedure '''glHistogram'''(''target'' : TGLenum; ''width'' : TGLsizei; |
− | + | ''internalformat'' : TGLenum; ''sink'' : TGLboolean) | |
Zeile 15: | Zeile 16: | ||
{| border="1" rules="all" | {| border="1" rules="all" | ||
! ''target'' | ! ''target'' | ||
− | | Muss einer der folgenden Konstanten sein: '''GL_HISTROGRAM''' oder '''GL_PROXY_HISTOGRAM'''. | + | | Das Histogramm, dessen Parameter gesetzt werden. Muss einer der folgenden Konstanten sein: '''GL_HISTROGRAM''' oder '''GL_PROXY_HISTOGRAM'''. |
|- | |- | ||
! ''width'' | ! ''width'' | ||
Zeile 24: | Zeile 25: | ||
|- | |- | ||
! ''sink'' | ! ''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 == | == 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.) | |
− | + | [[Histogramm|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. |
− | + | ||
− | + | <br> | |
− | |||
− | |||
== Hinweise == | == Hinweise == | ||
Zeile 50: | Zeile 47: | ||
Der Höchstwert für den Parameter ''width'' ist implementierungsabhängig, muß aber mindestens 32 sein. | Der Höchstwert für den Parameter ''width'' ist implementierungsabhängig, muß aber mindestens 32 sein. | ||
− | + | ||
== Fehlermeldungen == | == Fehlermeldungen == | ||
Zeile 65: | Zeile 62: | ||
'''GL_INVALID_OPERATION''' wird generiert, wenn '''glHistogram''' innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird. | '''GL_INVALID_OPERATION''' wird generiert, wenn '''glHistogram''' innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird. | ||
− | + | ||
== Zugehörige Wertrückgaben == | == Zugehörige Wertrückgaben == | ||
Zeile 72: | Zeile 69: | ||
== Siehe auch == | == Siehe auch == | ||
[[glGetHistogram]], [[glResetHistogram]] | [[glGetHistogram]], [[glResetHistogram]] | ||
+ | |||
+ | Hintergrundwissen: [[Histogram]] | ||
+ | |||
[[Kategorie:GL|Histogram]] | [[Kategorie:GL|Histogram]] |
Aktuelle Version vom 1. Februar 2007, 15:27 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.
Zugehörige Wertrückgaben
Siehe auch
glGetHistogram, glResetHistogram
Hintergrundwissen: Histogram