glColorTableEXT-Funktion

Die glColorTableEXT-Funktion gibt das Format und die Größe einer Palette für zielorientierte Palettentexturen an.

Syntax

void WINAPI glColorTableEXT(
         GLenum  target,
         GLenum  internalFormat,
         GLsizei width,
         GLenum  format,
         GLenum  type,
   const GLvoid  *data
);

Parameter

Ziel

Die Zieltextur, deren Palette geändert werden soll. Muss TEXTURE_1D, TEXTURE_2D, PROXY_TEXTURE_1D oder PROXY_TEXTURE_2D sein.

internalFormat

Das interne Format und die Auflösung der Palette. Dieser Parameter kann einen der folgenden symbolischen Werte annehmen.

Konstant Basisformat R Bits G-Bits B-Bits A Bits
GL_R3_G3_B2 GL_RGB 3 3 2
GL_RGB4 GL_RGB 4 4 4
GL_RGB5 GL_RGB 5 5 5
GL_RGB8 GL_RGB 8 8 8
GL_RGB10 GL_RGB 10 10 10
GL_RGB12 GL_RGB 12 12 12
GL_RGB16 GL_RGB 16 16 16
GL_RGBA2 GL_RGBA 2 2 2 2
GL_RGBA4 GL_RGBA 4 4 4 4
GL_RGB5_A1 GL_RGBA 5 5 5 1
GL_RGBA8 GL_RGBA 8 8 8 8
GL_RG10_A2 GL_RGBA 10 10 10 2
GL_RGB12 GL_RGBA 12 12 12 12
GL_RGBA16 GL_RGBA 16 16 16 16

width

Die Größe der Palette. Muss 2n = 1 für eine ganze Zahl n sein.

format

Das Format der Pixeldaten. Die folgenden symbolischen Konstanten werden akzeptiert.

Wert Bedeutung
GL_RGBA
Jedes Pixel ist eine Gruppe von vier Komponenten in dieser Reihenfolge: rot, grün, blau, alpha. Das RGBA-Format wird auf folgende Weise bestimmt:
  1. Die glColorTableEXT-Funktion konvertiert Gleitkommawerte direkt in ein internes Format mit nicht angegebener Genauigkeit. Ganzzahlwerte mit Vorzeichen werden linear dem internen Format zugeordnet, sodass der positivste darstellbare ganzzahlige Wert 1,0 und der negativste darstellbare ganzzahlige Wert -1,0 zugeordnet wird. Ganzzahlige Daten ohne Vorzeichen werden ähnlich zugeordnet: Der größte ganzzahlige Wert wird 1,0 zugeordnet, und null wird 0,0 zugeordnet.
  2. Die funktion glColorTableEXT multipliziert die resultierenden Farbwerte mit GL_c_SCALE und fügt sie GL_c_BIAS hinzu, wobei c für die jeweiligen Farbkomponenten ROT, GRÜN, BLAU und ALPHA ist. Die Ergebnisse werden auf den Bereich [0,1] geklemmt.
  3. Wenn GL_MAP_COLOR TRUE ist, skaliert glColorTableEXT jede Farbkomponente nach der Größe der Nachschlagetabelle GL_PIXEL_MAP_c_TO_c und ersetzt dann die Komponente durch den Wert, auf den sie in dieser Tabelle verweist. c ist R, G, B oder A.
  4. Die glColorTableEXT-Funktion konvertiert die resultierenden RGBA-Farben in Fragmente, indem die aktuelle Rasterposition z-Koordinaten und Texturkoordinaten an jedes Pixel angefügt werden, und dann dem n-tenFragment x- undy-Fensterkoordinaten wiex zugewiesen werden? = xr + nMod-Breite
    Y? = yr +n / breite
    wobei (xr , yr ) die aktuelle Rasterposition ist.
  5. Diese Pixelfragmente werden dann genau wie die Fragmente behandelt, die durch das Rastern von Punkten, Linien oder Polygonen generiert werden. Die glColorTableEXT-Funktion wendet Texturzuordnung, Nebel und alle Fragmentvorgänge an, bevor die Fragmente in den Framebuffer geschrieben werden.
GL_RED
Jedes Pixel ist eine einzelne rote Komponente.
Die glColorTableEXT-Funktion konvertiert diese Komponente in das interne Format auf die gleiche Weise wie die rote Komponente eines RGBA-Pixels, konvertiert sie dann in ein RGBA-Pixel mit grün und blau auf 0,0 und Alpha auf 1,0. Nach dieser Konvertierung wird das Pixel so behandelt, als wäre es als RGBA-Pixel gelesen worden.
GL_GREEN
Jedes Pixel ist eine einzelne grüne Komponente.
Die glColorTableEXT-Funktion konvertiert diese Komponente in das interne Format auf die gleiche Weise wie die grüne Komponente eines RGBA-Pixels und konvertiert sie dann in ein RGBA-Pixel mit roter und blauer Einstellung auf 0,0 und Alpha auf 1,0. Nach dieser Konvertierung wird das Pixel so behandelt, als wäre es als RGBA-Pixel gelesen worden.
GL_BLUE
Jedes Pixel ist eine einzelne blaue Komponente.
Die GlColorTableEXT-Funktion konvertiert diese Komponente in das interne Format auf die gleiche Weise wie die blaue Komponente eines RGBA-Pixels und konvertiert sie dann in ein RGBA-Pixel, dessen Rot und Grün auf 0,0 und Alpha auf 1,0 festgelegt ist. Nach dieser Konvertierung wird das Pixel so behandelt, als wäre es als RGBA-Pixel gelesen worden.
GL_ALPHA
Jedes Pixel ist eine einzelne Alphakomponente.
Die glColorTableEXT-Funktion konvertiert diese Komponente in das interne Format auf die gleiche Weise wie die Alphakomponente eines RGBA-Pixels und konvertiert sie dann in ein RGBA-Pixel, dessen Rot, Grün und Blau auf 0,0 festgelegt ist. Nach dieser Konvertierung wird das Pixel so behandelt, als wäre es als RGBA-Pixel gelesen worden.
GL_RGB
Jedes Pixel ist eine Gruppe von drei Komponenten in dieser Reihenfolge: rot, grün, blau.
Die glColorTableEXT-Funktion konvertiert jede Komponente in das interne Format auf die gleiche Weise wie die roten, grünen und blauen Komponenten eines RGBA-Pixels. Das Farbdreifach wird in ein RGBA-Pixel mit Alpha auf 1,0 konvertiert. Nach dieser Konvertierung wird das Pixel so behandelt, als wäre es als RGBA-Pixel gelesen worden.
GL_BGR_EXT
Jedes Pixel ist eine Gruppe von drei Komponenten in dieser Reihenfolge: blau, grün, rot.
GL_BGR_EXT bietet ein Format, das dem Speicherlayout von windows device-independent bitmaps (DIBs) entspricht. Daher können Ihre Anwendungen dieselben Daten mit Windows-Funktionsaufrufen und OpenGL-Pixelfunktionsaufrufen verwenden.
GL_BGRA_EXT
Jedes Pixel ist eine Gruppe von vier Komponenten in dieser Reihenfolge: blau, grün, rot, alpha.
GL_BGRA_EXT stellt ein Format bereit, das dem Speicherlayout von windows device-independent bitmaps (DIBs) entspricht. Daher können Ihre Anwendungen dieselben Daten mit Windows-Funktionsaufrufen und OpenGL-Pixelfunktionsaufrufen verwenden.

type

Der Datentyp für Daten. Die folgenden symbolischen Konstanten werden akzeptiert: GL_UNSIGNED_BYTE, GL_BYTE, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT und GL_FLOAT.

In der folgenden Tabelle wird die Bedeutung der gültigen Konstanten für den Type-Parameter zusammengefasst.

Wert Bedeutung
GL_UNSIGNED_BYTE
8-Bit-Ganzzahl ohne Vorzeichen
GL_BYTE
Ganze 8-Bit-Zahl mit Vorzeichen
GL_UNSIGNED_SHORT
16-Bit-Ganzzahl ohne Vorzeichen
GL_SHORT
Ganze 16-Bit-Zahl mit Vorzeichen
GL_UNSIGNED_INT
32-Bit Ganzzahl ohne Vorzeichen
GL_INT
32-bit integer
GL_FLOAT
Gleitkommawert mit einfacher Genauigkeit

data

Ein Zeiger auf die farbpaletten Texturdaten. Die Daten werden als einzelne Pixel eines 1D-Texturpaletteneintrags für einen Paletteneintrag behandelt.

Rückgabewert

Diese Funktion gibt keinen Wert zurück.

Fehlercodes

Die folgenden Fehlercodes können von der glGetError-Funktion abgerufen werden.

Name Bedeutung
GL_INVALID_VALUE
width war eine ungültige ganze Zahl.
GL_INVALID_ENUM
target, internalFormat, format oder type war kein akzeptierter Wert.
GL_INVALID_OPERATION
Die Funktion wurde zwischen einem Aufruf von glBegin und dem entsprechenden Aufruf von glEnd aufgerufen.

Bemerkungen

Palettentexturen werden mit einer Palette von Farben und einem Satz von Bilddaten definiert, der aus Indizes zu Farbeinträgen einer Palette (einer Farbtabelle) besteht.

Die glColorTableEXT-Funktion gibt die Texturpalette einer Zieltextur an. Es nimmt die Daten aus dem Arbeitsspeicher und konvertiert die Daten so, als ob jeder Paletteneintrag ein einzelnes Pixel einer 1D-Textur ist. Die Funktion glColorTableEXT entpackt und konvertiert die Daten und übersetzt sie in ein internes Format, das dem angegebenen Format so gut wie möglich entspricht.

Wenn die Breite einer Palette größer ist als der Bereich der Farbindizes in den Texturdaten, werden einige der Paletteneinträge nicht verwendet. Wenn die Breite einer Palette kleiner ist als der Bereich der Farbindizes in den Texturdaten, werden die wichtigsten Bits der Texturdaten ignoriert, und beim Zugriff auf die Palette wird nur die entsprechende Anzahl von Bits im Index verwendet. Wenn Sie ein Proxyziel mithilfe von PROXY_TEXTURE_1D oder PROXY_TEXTURE_2D angeben, wird die Palette der Proxytextur geändert, und die Parameter werden festgelegt, aber es werden keine Daten übertragen oder darauf zugegriffen.

Wenn der Zielparameter GL_PROXY_TEXTURE_1D oder GL_PROXY_TEXTURE_2D ist und die Implementierung die für Format oder Breite angegebenen Werte nicht unterstützt, kann glColorTableEXT die angeforderte Farbtabelle nicht erstellen. In diesem Fall ist die Farbtabelle leer, und alle abgerufenen Parameter sind 0. Sie können bestimmen, ob OpenGL ein bestimmtes Farbtabellenformat und eine bestimmte Größe unterstützt, indem Sie glColorTableEXT mit einem Proxyziel aufrufen und dann glGetColorTableParameterivEXT oder glGetColorTableParameterfvEXT aufrufen, um zu bestimmen, ob der width-Parameter mit dem von glColorTableEXT festgelegten Parameter übereinstimmt. Wenn die abgerufene Breite 0 ist, ist bei der Farbtabellenanforderung von glColorTable ein Fehler aufgetreten. Wenn die abgerufene Breite nicht 0 ist, können Sie glColorTable mit dem realen Ziel mit TEXTURE_1D oder TEXTURE_2D aufrufen, um die Farbtabelle festzulegen.

Hinweis

Die glColorTableEXT-Funktion ist eine Erweiterungsfunktion, die nicht Teil der OpenGL-Standardbibliothek ist, sondern Teil der GL_EXT_paletted_texture-Erweiterung ist. Rufen Sie glGetString(GL_EXTENSIONS) auf, um zu überprüfen, ob Ihre Implementierung von OpenGL glColorTableEXT unterstützt. Wenn GL_EXT_paletted_texture zurückgegeben wird, wird glColorTableEXT unterstützt. Rufen Sie wglGetProcAddress auf, um die Funktionsadresse einer Erweiterungsfunktion abzurufen.

Rufen Sie glGetColorTableEXT auf, um die tatsächlichen Farbtabellendaten abzurufen, die von der glColorTableEXT-Funktion angegeben werden. Rufen Sie die GlGetColorTableParameterivEXT- oder glGetColorTableParameterivEXT-Funktion auf, um die Parameter wie Breite und Format der Farbtabelle abzurufen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server)
Windows 2000 Server [nur Desktop-Apps]
Header
Gl.h

Siehe auch

glBegin

glColorSubTableEXT

glEnd

glGetColorTableEXT

glGetColorTableParameterfvEXT

glGetColorTableParameterivEXT

wglGetProcAddress