Fonction glTexSubImage2D

La fonction glTexSubImage2D spécifie une partie d'une image de texture unidimensionnelle existante. Vous ne pouvez pas définir une nouvelle texture avec glTexSubImage2D.

Syntaxe

void WINAPI glTexSubImage2D(
         GLenum  target,
         GLint   level,
         GLint   xoffset,
         GLint   yoffset,
         GLsizei width,
         GLsizei height,
         GLenum  format,
         GLenum  type,
   const GLvoid  *pixels
);

Paramètres

cible

La texture cible. Doit être GL_TEXTURE_2D.

level

Le numéro du niveau de détail. Le niveau 0 est l'image de base. Le niveau n est la n° image de réduction mipmap.

xoffset

Un décalage de texel dans la direction x dans le tableau de textures.

yoffset

Un décalage de texel dans la direction y dans le tableau de textures.

width

La largeur de la sous-image de texture.

height

La hauteur de la sous-image de texture.

format

Le format des données de pixels. Il peut prendre l'une des valeurs symboliques suivantes.

Value Signification
GL_COLOR_INDEX
Chaque élément est une valeur unique, un indice de couleur. Il est converti au format 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 au format à 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 au format à 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 au format à 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 alpha. Il est converti au format à 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 au format à 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_LUMINANCE
Chaque élément est une valeur de luminance unique. Il est converti au format à virgule flottante, puis assemblé en un élément RGBA en reproduisant 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 au format à 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

Le 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

Un 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
GL_INVALID_ENUM
la cible n'était pas GL_TEXTURE_2D.
GL_INVALID_ENUM
le format n’était pas une constante acceptée.
GL_INVALID_ENUM
le type n’était pas une constante acceptée.
GL_INVALID_ENUM
le type était GL_BITMAP et le format n'était pas GL_COLOR_INDEX.
GL_INVALID_VALUE
level était inférieur à zéro ou supérieur à log2 max, où max était la valeur renvoyée de GL_MAX_TEXTURE_SIZE.
GL_INVALID_VALUE
xoffset était inférieur à -b ; ou la largeur + xoffset était supérieure à w - b ; ou yoffset était inférieur à -b ; ou la hauteur du + décalage était supérieure à h - b, où w est le GL_TEXTURE_WIDTH, h est le GL_TEXTURE_HEIGHT et b est la largeur du GL_TEXTURE_BORDER de l'image de texture en cours de modification.
Notez que w et h incluent deux fois la largeur de la bordure.
GL_INVALID_VALUE
la largeur était inférieur à b, où b est la largeur de la bordure du tableau de textures.
GL_INVALID_VALUE
la frontière n’était ni zéro ni 1.
GL_INVALID_OPERATION
Le tableau de textures n'a pas été défini par une opération glTexImage2D précédente.
GL_INVALID_OPERATION
La fonction a été appelée entre un appel à glBegin et l'appel correspondant à glEnd.

Notes

La texturation bidimensionnelle pour une primitive est activée à l'aide de glEnable et glDisable avec l'argument GL_TEXTURE_2D. Lors de la texturation, une partie d'une image de texture spécifiée est mappée dans chaque primitive activée. Vous utilisez la fonction glTexSubImage2D pour spécifier une sous-image contiguë d'une image de texture bidimensionnelle existante pour la texturation.

Les texels référencés par pixels remplacent une région du tableau de textures existant par les index x de xoffset et xoffset + (largeur 1) inclus et les index y de yoffset et yoffset + (hauteur 1) inclus. Cette région ne peut inclure aucun texel en dehors de la plage du tableau de textures initialement spécifié.

Spécifier une sous-image avec une largeur nulle n'a aucun effet et ne génère pas d'erreur.

La texturation n’a aucun effet en mode index de couleur.

En général, les images de texture peuvent être représentées 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.

Les fonctions suivantes récupèrent les informations liées à glTexSubImage2D :

glGetTexImage

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
Gl.h
Bibliothèque
Opengl32.lib
DLL
Opengl32.dll

Voir aussi

glCopyTexImage1D

glCopyTexImage2D

glCopyTexSubImage1D

glCopyTexSubImage2D

glDrawPixels

glEnable

glFog

glGetTexImage

glIsEnabled

glPixelStore

glPixelTransfer

glTexEnv

glTexGen

glTexImage1D

glTexImage2D

glTexSubImage1D

glTexImage2D

glTexParameter