glColorTable: Unterschied zwischen den Versionen
Flash (Diskussion | Beiträge) K |
|||
Zeile 145: | Zeile 145: | ||
matrix color lookup table before being used by the histogram operation. | matrix color lookup table before being used by the histogram operation. | ||
− | + | </i></b> | |
== Hinweise == | == Hinweise == |
Version vom 20. November 2005, 14:08 Uhr
(Mehr Informationen/weitere Artikel) {{{1}}} |
Inhaltsverzeichnis
glColorTable
Name
glColorTable - definiert eine Lookup-Tabelle für Farben.
Delphi-Spezifikation
procedure glColorTable(internalformat : GLenum; width : GLsizei; format : GLenum; type : GLenum; const table PGLvoid)
Parameter
target | Muss einer der folgenden Konstanten sein: GL_COLOR_TABLE, GL_POST_CONVOLUTION_COLOR_TABLE, GL_POST_COLOR_MATRIX_COLOR_TABLE, GL_PROXY_COLOR_TABLE, GL_PROXY_POST_CONVOLUTION_COLOR_TABLE oder GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE. |
---|---|
internalformat | Die interne Farben-Tabelle. 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_INTENSITY, GL_INTENSITY4, GL_INTENSITY8, GL_INTENSITY12, GL_INTENSITY16, 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. |
width | Die Anzahl der Einträge in der Farben-Lookup-Tabelle, die mit table angegeben wurde. |
format | Das Format der Pixeldaten in table. Zulässig sind GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_RGB, GL_BGR, GL_RGBA und GL_BGRA. |
type | Der Typ der Pixeldaten in table. Zulässig sind GL_UNSIGNED_BYTE, GL_BYTE, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT, GL_FLOAT, GL_UNSIGNED_BYTE_3_3_2, GL_UNSIGNED_BYTE_2_3_3_REV, GL_UNSIGNED_SHORT_5_6_5, GL_UNSIGNED_SHORT_5_6_5_REV, GL_UNSIGNED_SHORT_4_4_4_4, GL_UNSIGNED_SHORT_4_4_4_4_REV, GL_UNSIGNED_SHORT_5_5_5_1, GL_UNSIGNED_SHORT_1_5_5_5_REV, GL_UNSIGNED_INT_8_8_8_8, GL_UNSIGNED_INT_8_8_8_8_REV, GL_UNSIGNED_INT_10_10_10_2 und GL_UNSIGNED_INT_2_10_10_10_REV. |
table | Ein Pointer zu einem eindimensionalen Array mit Pixeldaten, der dazu verwendet wird, die Farb-Tabelle zu erzeugen. |
Beschreibung
glColorTable kann für zwei Methoden verwendet werden: Um die aktuelle Größe und Farb-Auflösung einer Lookup-Tabelle mit einem bestimmten Satz von Parametern zu testen, oder um die Inhalte einer Farb-Lookup-Tabelle zu laden. Für den ersten Fall benutze man für die targets GL_PROXY_*, für den zweiten die anderen Konstanten.
Wenn target den Wert GL_COLOR_TABLE, GL_POST_CONVOLUTION_COLOR_TABLE oder GL_POST_COLOR_MATRIX_COLOR_TABLE hat, erzeugt glColorTable eine Farb-Lookup-Tabelle aus einem Array von Pixeln. Das Pixelarray - spezifiziert mit width, format, type und table - wird aus dem Speicher geholt und verarbeitet, wie wenn glDrawPixels aufgerufen worden wäre, aber die Verarbeitung hält, nachdem die finale Verarbeitung nach RGBA vervollständigt wurde.
Die vier scale- und die vier bias-Parameter, die für die Tabelle angegeben wurden, werden anschließend verwendet, um die R, G, B und A-Komponenten für jedes Pixel zu skalieren und zu beeinflussen. (Man verwende glColorTableParameter, um diese scale- und bias-Parameter zu setzen)
Als nächstes werden die R-, G-, B- und A-Werte an den [0,1]-Bereich angepasst. Jeder Pixel wird dann in das interne Format - angegeben mit internalformat - konvertiert. Diese Umwandlung verschiebt die Komponenten-Werte von den Pixeln (R, G, B und A) zu den Werten, die mit internalformat angegeben wurden (rot, grün, blau, alpha, Beleuchtung und Intensität). Das Verschieben verläuft folgendermaßen:
Internes Format | Verschobene Komponente |
---|---|
GL_ALPHA | A=Alpha |
GL_LUMINANCE | R=Luminance |
GL_LUMINANCE_ALPHA | A=Alpha, R=Luminance |
GL_INTENSITY | R=Intensity |
GL_RGB | R=Red, G=Green, B=Blue |
GL_RGBA | R=Red, G=Green, B=Blue, A=Alpha |
Finally, the red, green, blue, alpha, luminance, and/or intensity com-components
ponents of the resulting pixels are stored in the color table. They form a one-dimensional table with indices in the range [0, width - 1].
If target is GL_PROXY_*, glColorTable recomputes and stores the values
of the proxy color table's state variables GL_COLOR_TABLE_FORMAT, GL_COLOR_TABLE_WIDTH, GL_COLOR_TABLE_RED_SIZE, GL_COLOR_TABLE_GREEN_SIZE, GL_COLOR_TABLE_BLUE_SIZE, GL_COLOR_TABLE_ALPHA_SIZE, GL_COLOR_TABLE_LUMINANCE_SIZE, and GL_COLOR_TABLE_INTENSITY_SIZE. There is no effect on the image or state of any actual color table. If the specified color table is too large to be supported, then all the proxy state variables listed above are set to zero. Otherwise, the color table could be supported by glColorTable using the corresponding non-proxy target, and the proxy state variables are set as if that target were being defined.
The proxy state variables can be retrieved by calling
glGetColorTableParameter with a target of GL_PROXY_*. This allows the application to decide if a particular glColorTable command would suc-succeed, ceed, and to determine what the resulting color table attributes would be.
If a color table is enabled, and its width is non-zero, then its con-contents
tents are used to replace a subset of the components of each RGBA pixel group, based on the internal of the table.
Each pixel group has color components (R, G, B, A) that are in the
range [0.0, 1.0]. The color components are rescaled to the size of the color lookup table to form an index. Then a subset of the components based on the internal of the table are replaced by the table entry selected by that index. If the color components and contents of the table are represented as follows:
Representation Meaning
r Table index computed from R g Table index computed from G b Table index computed from B a Table index computed from A L[i] Luminance value at table index i I[i] Intensity value at table index i R[i] Red value at table index i G[i] Green value at table index i B[i] Blue value at table index i A[i] Alpha value at table index i
then the result of color table lookup is as follows:
Table Internal Resulting Texture Components
Format R G B A
GL_ALPHA R G B A[a] GL_LUMINANCE L[r] L[g] L[b] At GL_LUMINANCE_ALPHA L[r] L[g] L[b] A[a] GL_INTENSITY I[r] I[g] I[b] I[a] GL_RGB R[r] G[g] B[b] A GL_RGBA R[r] G[g] B[b] A[a]
When GL_COLOR_TABLE is enabled, the colors resulting from the pixel map
operation (if it is enabled) are mapped by the color lookup table before being passed to the convolution operation. The colors resulting from the convolution operation are modified by the post convolution color lookup table when GL_POST_CONVOLUTION_COLOR_TABLE is enabled. These modified colors are then sent to the color matrix operation. Finally, if GL_POST_COLOR_MATRIX_COLOR_TABLE is enabled, the colors resulting from the color matrix operation are mapped by the post color matrix color lookup table before being used by the histogram operation.
Hinweise
glColorTable ist nur verfügbar, wenn GL_ARB_imaging von glGetString mit dem Argmument GL_EXTENSIONS zurückgeliefert wird.
Wenn target den Wert GL_COLOR_TABLE, GL_POST_CONVOLUTION_COLOR_TABLE oder GL_POST_COLOR_MATRIX_COLOR_TABLE hat, muss width vom Typ 2^n (n: Integer) sein. Ansonsten wird der Fehler GL_INVALID_VALUE erzeugt.
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.
GL_INVALID_ENUM wird generiert, wenn format keinen der zulässigen Werte hat.
GL_INVALID_ENUM wird generiert, wenn type keinen der zulässigen Werte hat.
GL_TABLE_TOO_LARGE wird generiert, wenn die angeforderte Farbtabelle zu groß ist und wenn target gleichzeitig nicht vom Typ GL_PROXY_* ist.
GL_INVALID_OPERATION wird generiert, wenn glColorTable innerhalb eines glBegin-glEnd Blocks aufgerufen wird.
Zugehörige Wertrückgaben
Siehe auch
glColorSubTable, glColorTableParameter, glCopyColorTable, glCopyColorSubTable, glGetColorTable