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 |
---|---|
|
la cible n'était pas GL_TEXTURE_2D. |
|
le format n’était pas une constante acceptée. |
|
le type n’était pas une constante acceptée. |
|
le type était GL_BITMAP et le format n'était pas GL_COLOR_INDEX. |
|
level était inférieur à zéro ou supérieur à log2 max, où max était la valeur renvoyée de GL_MAX_TEXTURE_SIZE. |
|
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. |
|
la largeur était inférieur à b, où b est la largeur de la bordure du tableau de textures. |
|
la frontière n’était ni zéro ni 1. |
|
Le tableau de textures n'a pas été défini par une opération glTexImage2D précédente. |
|
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 :
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 |
|