Fonction glTexImage2D
La fonction glTexImage2D spécifie une image de texture bidimensionnelle.
Syntaxe
void WINAPI glTexImage2D(
GLenum target,
GLint level,
GLint internalformat,
GLsizei width,
GLsizei height,
GLint border,
GLint format,
GLenum type,
const GLvoid *pixels
);
Paramètres
-
cible
-
Texture cible. Doit être GL_TEXTURE_2D.
-
level
-
Le numéro du niveau de détail. Le niveau 0 est le niveau de l’image de base. Le niveau n est la ne image de réduction mipmap.
-
internalformat
-
Nombre de composants de couleur dans la texture. Doit être 1, 2, 3 ou 4, ou l’une des constantes symboliques suivantes : 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, or GL_RGBA16.
-
width
-
La largeur de l’image de texture. Doit être 2n + 2( bordure ) pour un entier n.
-
height
-
Hauteur de l’image de texture. Doit être 2*m* + 2(bordure) pour un entier m.
-
bordure
-
Largeur de la bordure. Doit être 0 ou 1.
-
format
-
Format des données de pixels. Il peut prendre l’une des neuf valeurs symboliques.
Value Signification - GL_COLOR_INDEX
Chaque élément est une valeur unique, un indice de couleur. Il est converti en virgule fixe (avec un nombre non spécifié de 0 bits à droite du point binaire), décalé vers la gauche ou la droite, selon la valeur et le signe de GL_INDEX_SHIFT, et ajouté à GL_INDEX_OFFSET (voir glPixelTransfer). L’index résultant est converti en un ensemble de composants de couleur à l’aide des tables GL_PIXEL_MAP_I_TO_R, GL_PIXEL_MAP_I_TO_G, GL_PIXEL_MAP_I_TO_B et GL_PIXEL_MAP_I_TO_A, et limité à la plage [0,1]. - GL_RED
Chaque élément est un seul composant rouge. Il est converti en virgule flottante et assemblé en un élément RGBA en attachant 0,0 pour le vert et le bleu et 1,0 pour l’alpha. Chaque composant est ensuite multiplié par le facteur d’échelle signé GL_c_SCALE, ajouté au biais signé GL_c_BIAS et limité à la plage [0,1] (voir glPixelTransfer). - GL_GREEN
Chaque élément est un seul composant vert. Il est converti en virgule flottante et assemblé en un élément RGBA en attachant 0,0 pour le rouge et le bleu et 1,0 pour l’alpha. Chaque composant est ensuite multiplié par le facteur d’échelle signé GL_c_SCALE, ajouté au biais signé GL_c_BIAS et limité à la plage [0,1] (voir glPixelTransfer). - GL_BLUE
Chaque élément est un seul composant bleu. Il est converti en virgule flottante et assemblé en un élément RGBA en attachant 0,0 pour le rouge et le vert et 1,0 pour l’alpha. Chaque composant est ensuite multiplié par le facteur d’échelle signé GL_c_SCALE, ajouté au biais signé GL_c_BIAS et limité à la plage [0,1] (voir glPixelTransfer). - GL_ALPHA
Chaque élément est un seul composant rouge. Il est converti en virgule flottante et assemblé en un élément RGBA en attachant 0,0 pour le rouge, le vert et le bleu. Chaque composant est ensuite multiplié par le facteur d’échelle signé GL_c_SCALE, ajouté au biais signé GL_c_BIAS et limité à la plage [0,1] (voir glPixelTransfer). - GL_RGB
Chaque élément est un triple RVB. Il est converti en virgule flottante et assemblé en un élément RGBA en attachant 1.0 pour alpha. Chaque composant est ensuite multiplié par le facteur d’échelle signé GL_c_SCALE, ajouté au biais signé GL_c_BIAS et limité à la plage [0,1] (voir glPixelTransfer). - GL_RGBA
Chaque élément est un élément RGBA complet. Il est converti en virgule flottante. Chaque composant est ensuite multiplié par le facteur d’échelle signé GL_c_SCALE, ajouté au biais signé GL_c_BIAS et limité à la plage [0,1] (voir glPixelTransfer). - 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 (DIB) indépendants de l’appareil Windows. Ainsi vos applications peuvent utiliser les mêmes données avec des appels de fonctions Windows et des appels de fonctions 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 Windows indépendants de l’appareil (DIB). Ainsi vos applications peuvent utiliser les mêmes données avec des appels de fonctions Windows et des appels de fonctions pixels OpenGL. - GL_LUMINANCE
Chaque élément est une valeur de luminance unique. Il est converti en virgule flottante, puis assemblé en un élément RGBA en répliquant la valeur de luminance trois fois pour le rouge, le vert et le bleu, et en attachant 1,0 pour l’alpha. Chaque composant est ensuite multiplié par le facteur d’échelle signé GL_c_SCALE, ajouté au biais signé GL_c_BIAS et limité à la plage [0,1] (voir glPixelTransfer). - GL_LUMINANCE_ALPHA
Chaque élément est une paire luminance/alpha. Il est converti en virgule flottante, puis assemblé en un élément RGBA en répliquant trois fois la valeur de luminance pour le rouge, le vert et le bleu. Chaque composant est ensuite multiplié par le facteur d’échelle signé GL_c_SCALE, ajouté au biais signé GL_c_BIAS et limité à la plage [0,1] (voir glPixelTransfer). -
type
-
Type de données des données de pixels. Les valeurs symboliques suivantes sont acceptées : GL_UNSIGNED_BYTE, GL_BYTE, GL_BITMAP, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT et GL_FLOAT.
-
pixels
-
Pointeur vers les données d’image en mémoire.
Valeur retourné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 |
---|---|
|
La cible n’était pas un GL_TEXTURE_2D. |
|
Le format n’était pas une constante de format acceptée. Seules les constantes de format autres que GL_STENCIL_INDEX et GL_DEPTH_COMPONENT sont acceptées. Voir la description du paramètre de format pour consulter une liste des valeurs possibles. |
|
Le type n’était pas une constante de type. |
|
Le type était GL_BITMAP et le format n’était pas GL_COLOR_INDEX. |
|
Le niveau était inférieur à zéro ou supérieur à log2 max, où max était la valeur renvoyée de GL_MAX_TEXTURE_SIZE. |
|
internalformat n’était pas 1, 2, 3 ou 4. |
|
La largeur ou hauteur était inférieure à zéro ou supérieure à 2 + GL_MAX_TEXTURE_SIZE, ou elle ne pouvait pas être représentée par 2 n + 2(border) pour une valeur entière de n. |
|
La frontière n’était pas 0 ou 1. |
|
La fonction a été appelée entre un appel à glBegin et l’appel correspondant à glEnd. |
Notes
La fonction glTexImage2D spécifie une image de texture bidimensionnelle. La texturation mappe une partie d’une image de texture spécifiée sur chaque primitive graphique pour laquelle la texturation est activée. La texturation bidimensionnelle est activée et désactivée à l’aide de glEnable et glDisable avec l’argument GL_TEXTURE_2D.
Les images de texture sont définies avec glTexImage2D. Les arguments décrivent les paramètres de l’image de texture, tels que la hauteur, la largeur, la largeur de la bordure, le numéro de niveau de détail (voir glTexParameter) et le nombre de composants de couleur fournis. Les trois derniers arguments décrivent la manière dont l’image est représentée dans la mémoire. Ces arguments sont identiques aux formats de pixels utilisés pour glDrawPixels.
Les données sont lues à partir des pixels sous forme de séquence d’octets signés ou non signés, de valeurs courtes ou longues, ou de valeurs à virgule flottante simple précision, selon le type. Ces valeurs sont regroupées en ensembles de une, deux, trois ou quatre valeurs, selon le format, pour former des éléments. Si le type est GL_BITMAP, les données sont considérées comme une chaîne d’octets non signés (et le format doit être GL_COLOR_INDEX). Chaque octet de données est traité comme huit éléments de 1 bit, l’ordre des bits étant déterminé par GL_UNPACK_LSB_FIRST (voir glPixelStore). Veuillez consulter glDrawPixels pour obtenir une description des valeurs acceptables pour le paramètre type.
Une image de texture peut avoir jusqu’à quatre composants par élément de texture, en fonction des components. Une image de texture à un composant utilise uniquement la composante rouge de la couleur RGBA extraite des pixels. Une image à deux composants utilise les valeurs R et A. Une image à trois composants utilise les valeurs R, G et B. Une image à quatre composants utilise tous les composants RGBA.
La texturation n’a aucun effet en mode index de couleur.
L’image de texture peut être représentée par les mêmes formats de données que les pixels dans une commande glDrawPixels, sauf que GL_STENCIL_INDEX et GL_DEPTH_COMPONENT ne peuvent pas être utilisés. Les modes glPixelStore et glPixelTransfer affectent les images de texture exactement de la même manière qu’ils affectent glDrawPixels.
Une image de texture avec une largeur ou une hauteur nulle indique la texture nulle. Si la texture nulle est spécifiée pour un niveau de détail 0, c’est comme si la texturation était désactivée.
Les fonctions suivantes récupèrent les informations liées à glTexImage2D :
glIsEnabled avec l’argument GL_TEXTURE_2D
Spécifications
Condition requise | Value |
---|---|
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 |
|
Bibliothèque |
|
DLL |
|