Partager via


fonction glColorTableEXT

La fonction glColorTableEXT spécifie le format et la taille d’une palette pour les textures de palette ciblées.

Syntaxe

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

Paramètres

cible

Texture cible dont la palette doit être modifiée. Doit être TEXTURE_1D, TEXTURE_2D, PROXY_TEXTURE_1D ou PROXY_TEXTURE_2D.

internalFormat

Format interne et résolution de la palette. Ce paramètre peut supposer l’une des valeurs symboliques suivantes.

Constante Base Format 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

Taille de la palette. Doit être 2n = 1 pour un entier n.

format

Format des données de pixels. Les constantes symboliques suivantes sont acceptées.

Valeur Signification
GL_RGBA
Chaque pixel est un groupe de quatre composants dans cet ordre : rouge, vert, bleu, alpha. Le format RVBA est déterminé de cette façon :
  1. La fonction glColorTableEXT convertit directement les valeurs à virgule flottante dans un format interne avec une précision non spécifiée. Les valeurs entières signées sont mappées linéairement au format interne, de sorte que la valeur d’entier représentable la plus positive est mappée à 1,0 et que la valeur d’entier représentable la plus négative est mappée à -1,0. Les données entières non signées sont mappées de la même façon : la plus grande valeur entière est mappée à 1,0 et zéro est mappée à 0,0.
  2. La fonction glColorTableEXT multiplie les valeurs de couleur résultantes par GL_c_SCALE et les ajoute à GL_c_BIAS, où c est ROUGE, VERT, BLEU et ALPHA pour les composants de couleur respectifs. Les résultats sont limités à la plage [0,1].
  3. Si GL_MAP_COLOR a la valeur TRUE, glColorTableEXT met à l’échelle chaque composant de couleur en fonction de la taille de la table de choix GL_PIXEL_MAP_c_TO_c, puis remplace le composant par la valeur qu’il référence dans cette table ; c est R, G, B ou A, respectivement.
  4. La fonction glColorTableEXT convertit les couleurs RVBA obtenues en fragments en attachant la coordonnée z et les coordonnées de texture actuelles de position raster à chaque pixel, puis en affectant les coordonnées de fenêtre x et y au nièmefragment de sorte quex? = xr + nmod width
    y? = yr +n / width
    où (xr , yr ) est la position raster actuelle.
  5. Ces fragments de pixels sont ensuite traités comme les fragments générés par la rastérisation de points, de lignes ou de polygones. La fonction glColorTableEXT applique le mappage des textures, le brouillard et toutes les opérations de fragment avant d’écrire les fragments dans le framebuffer.
GL_RED
Chaque pixel est un seul composant rouge.
La fonction glColorTableEXT convertit ce composant au format interne de la même façon que le composant rouge d’un pixel RVBA, puis le convertit en pixel RVBA avec le vert et le bleu définis sur 0,0 et alpha sur 1.0. Après cette conversion, le pixel est traité comme s’il avait été lu en tant que pixel RVBA.
GL_GREEN
Chaque pixel est un seul composant vert.
La fonction glColorTableEXT convertit ce composant au format interne de la même façon que le composant vert d’un pixel RGBA, puis le convertit en pixel RVBA avec le rouge et le bleu définis sur 0.0 et alpha sur 1.0. Après cette conversion, le pixel est traité comme s’il avait été lu en tant que pixel RVBA.
GL_BLUE
Chaque pixel est un seul composant bleu.
La fonction glColorTableEXT convertit ce composant au format interne de la même façon que le composant bleu d’un pixel RVBA, puis le convertit en pixel RVBA avec le rouge et le vert définis sur 0,0 et alpha sur 1.0. Après cette conversion, le pixel est traité comme s’il avait été lu en tant que pixel RVBA.
GL_ALPHA
Chaque pixel est un seul composant alpha.
La fonction glColorTableEXT convertit ce composant au format interne de la même façon que le composant alpha d’un pixel RVBA, puis le convertit en pixel RVBA avec rouge, vert et bleu défini sur 0,0. Après cette conversion, le pixel est traité comme s’il avait été lu en tant que pixel RVBA.
GL_RGB
Chaque pixel est un groupe de trois composants dans cet ordre : rouge, vert, bleu.
La fonction glColorTableEXT convertit chaque composant au format interne de la même façon que les composants rouges, verts et bleus d’un pixel RVBA. Le triple de couleur est converti en pixel RVBA avec alpha défini sur 1.0. Après cette conversion, le pixel est traité comme s’il avait été lu en tant que pixel RVBA.
GL_BGR_EXT
Chaque pixel est un groupe de trois composants dans cet ordre : bleu, vert, rouge.
GL_BGR_EXT fournit un format qui correspond à la disposition de la mémoire des bitmaps indépendantes de l’appareil (DIB) Windows. Ainsi, vos applications peuvent utiliser les mêmes données avec les appels de fonction Windows et les appels de fonction de pixels OpenGL.
GL_BGRA_EXT
Chaque pixel est un groupe de quatre composants dans cet ordre : bleu, vert, rouge, alpha.
GL_BGRA_EXT fournit un format qui correspond à la disposition de la mémoire des bitmaps indépendantes de l’appareil (DIB) Windows. Ainsi, vos applications peuvent utiliser les mêmes données avec les appels de fonction Windows et les appels de fonction de pixels OpenGL.

type

Type de données pour les données. Les constantes symboliques suivantes sont acceptées : GL_UNSIGNED_BYTE, GL_BYTE, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT et GL_FLOAT.

Le tableau suivant résume la signification des constantes valides pour le paramètre de type .

Valeur Signification
GL_UNSIGNED_BYTE
Entier 8 bits non signé
GL_BYTE
Entier 8 bits signé
GL_UNSIGNED_SHORT
Entier 16 bits non signé
GL_SHORT
Entier 16 bits signé
GL_UNSIGNED_INT
Entier 32 bits non signé
GL_INT
Entier de 32 bits
GL_FLOAT
Valeur à virgule flottante simple précision

data

Pointeur vers les données de texture en palette. Les données sont traitées comme des pixels uniques d’une entrée de palette de textures 1D pour une entrée de palette.

Valeur renvoyée

Cette fonction ne retourne pas de valeur.

Codes d’erreur

Les codes d’erreur suivants peuvent être récupérés par la fonction glGetError .

Nom Signification
GL_INVALID_VALUE
width était un entier non valide.
GL_INVALID_ENUM
target, internalFormat, format ou type n’était pas une valeur acceptée.
GL_INVALID_OPERATION
La fonction a été appelée entre un appel à glBegin et l’appel correspondant à glEnd.

Notes

Les textures en palette sont définies avec une palette de couleurs et un ensemble de données d’image composé d’index pour les entrées de couleur d’une palette (une table de couleurs).

La fonction glColorTableEXT spécifie la palette de textures d’une texture ciblée. Il prend les données de la mémoire et les convertit comme si chaque entrée de palette n’était qu’un seul pixel d’une texture 1D. La fonction glColorTableEXT décompresse et convertit les données et les traduit dans un format interne qui correspond au format donné aussi étroitement que possible.

Si la largeur d’une palette est supérieure à la plage des index de couleurs dans les données de texture, certaines entrées de palette sont inutilisées. Si la largeur d’une palette est inférieure à la plage des index de couleurs dans les données de texture, les bits les plus significatifs des données de texture sont ignorés et seuls le nombre approprié de bits dans l’index est utilisé lors de l’accès à la palette. Lorsque vous spécifiez une cible proxy à l’aide de PROXY_TEXTURE_1D ou de PROXY_TEXTURE_2D, la palette de la texture de proxy est redimensionnée et ses paramètres sont définis, mais aucune donnée n’est transférée ou accessible.

Lorsque le paramètre cible est GL_PROXY_TEXTURE_1D ou GL_PROXY_TEXTURE_2D et que l’implémentation ne prend pas en charge les valeurs spécifiées pour le format ou la largeur, glColorTableEXT peut ne pas créer la table de couleurs demandée. Dans ce cas, la table de couleurs est vide et tous les paramètres récupérés seront zéro. Vous pouvez déterminer si OpenGL prend en charge un format et une taille de tableau de couleurs particuliers en appelant glColorTableEXT avec une cible proxy, puis en appelant glGetColorTableParameterivEXT ou glGetColorTableParameterfvEXT pour déterminer si le paramètre width correspond à celui défini par glColorTableEXT. Si la largeur récupérée est égale à zéro, la demande de table de couleurs par glColorTable a échoué. Si la largeur récupérée n’est pas égale à zéro, vous pouvez appeler glColorTable avec la cible réelle avec TEXTURE_1D ou TEXTURE_2D pour définir la table de couleurs.

Notes

La fonction glColorTableEXT est une fonction d’extension qui ne fait pas partie de la bibliothèque OpenGL standard, mais qui fait partie de l’extension GL_EXT_paletted_texture. Pour case activée si votre implémentation d’OpenGL prend en charge glColorTableEXT, appelez glGetString(GL_EXTENSIONS). S’il retourne GL_EXT_paletted_texture, glColorTableEXT est pris en charge. Pour obtenir l’adresse de fonction d’une fonction d’extension, appelez wglGetProcAddress.

Pour récupérer les données réelles de la table de couleurs spécifiées par la fonction glColorTableEXT , appelez glGetColorTableEXT. Pour récupérer les paramètres, tels que la largeur et le format, de la table de couleurs spécifiée par la fonction glColorTableEXT , appelez la fonction glGetColorTableParameterivEXT ou glGetColorTableParameterfvEXT .

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge
Windows 2000 Server [applications de bureau uniquement]
En-tête
Gl.h

Voir aussi

glBegin

glColorSubTableEXT

glEnd

glGetColorTableEXT

glGetColorTableParameterfvEXT

glGetColorTableParameterivEXT

wglGetProcAddress