glPixelTransferi, fonction
Les fonctions glPixelTransferf et glPixelTransferi définissent les modes de transfert de pixels.
Syntaxe
void WINAPI glPixelTransferi(
GLenum pname,
GLint param
);
Paramètres
-
pname
-
Nom symbolique du paramètre de transfert de pixels à définir. Le tableau suivant indique le type, la valeur initiale et la plage de valeurs valides pour chacun des paramètres de transfert de pixels définis avec glPixelTransfer.
Pname Type Valeur initiale Plage valide GL_MAP_COLOR Booléen false true/false GL_MAP_STENCIL Booléen false true/false GL_INDEX_SHIFT entier 0 (8,8) GL_INDEX_OFFSET entier 0 (8,8) GL_RED_SCALE entier 1.0 (8,8) GL_GREEN_SCALE float 1.0 (8,8) GL_BLUE_SCALE float 1.0 (8,8) GL_ALPHA_SCALE float 1.0 (8,8) GL_DEPTH_SCALE float 1.0 (8,8) GL_RED_BIAS float 0,0 (8,8) GL_GREEN_BIAS float 0,0 (8,8) GL_BLUE_BIAS float 0,0 (8,8) GL_ALPHA_BIAS float 0,0 (8,8) GL_DEPTH_BIAS float 0,0 (8,8) -
param
-
Valeur sur laquelle pname est défini.
Valeur renvoyée
Cette fonction ne retourne pas de valeur.
Notes
La fonction glPixelTransfer définit les modes de transfert de pixels qui affectent le fonctionnement des commandes glCopyPixels, glCopyTexImage1D, glCopyTexImage2D, glCopyTexSubImage1D, glCopyTexSubImage2D, glDrawPixels, glReadPixels, glTexImage1D, glTexImage2D, glTexSubImage1D et glTexSubImage2D . Les algorithmes spécifiés par les modes de transfert de pixels fonctionnent sur les pixels une fois qu’ils sont lus à partir du framebuffer (glReadPixels et glCopyPixels) ou décompressés à partir de la mémoire cliente (glDrawPixels, glTexImage1D et glTexImage2D). Les opérations de transfert de pixels se produisent dans le même ordre et de la même manière, quelle que soit la commande qui a abouti à l’opération de pixel. Les modes de stockage de pixels (glPixelStore) contrôlent le déballage des pixels en cours de lecture à partir de la mémoire du client et l’empaquetage des pixels en cours d’écriture dans la mémoire du client.
Les opérations de transfert de pixels gèrent quatre types de pixels fondamentaux : couleur, index de couleur, profondeur et gabarit. Les pixels de couleur sont constitués de quatre valeurs à virgule flottante avec des mantisses et des tailles d’exposant non spécifiées, mises à l’échelle de telle sorte que 0,0 représente une intensité nulle et 1,0 représente l’intensité totale. Les index de couleur comprennent une valeur à point fixe unique, avec une précision non spécifiée à droite du point binaire. Les pixels de profondeur comprennent une valeur à virgule flottante unique, avec des mantisses et des tailles d’exposant non spécifiées, mises à l’échelle de telle sorte que 0,0 représente la valeur de mémoire tampon de profondeur minimale et 1,0 représente la valeur de mémoire tampon de profondeur maximale. Enfin, les pixels de gabarit comprennent une seule valeur à point fixe, avec une précision non spécifiée à droite du point binaire.
Les opérations de transfert de pixels effectuées sur les quatre types de pixels de base sont les suivantes :
Type de pixel | Opération de transfert de pixels |
---|---|
Color | Chacun des quatre composants de couleur est multiplié par un facteur d’échelle, puis ajouté à un facteur de biais. Autrement dit, le composant rouge est multiplié par GL_RED_SCALE, puis ajouté à GL_RED_BIAS; le composant vert est multiplié par GL_GREEN_SCALE, puis ajouté à GL_GREEN_BIAS ; le composant bleu est multiplié par GL_BLUE_SCALE, puis ajouté à GL_BLUE_BIAS ; et le composant alpha est multiplié par GL_ALPHA_SCALE, puis ajouté à GL_ALPHA_BIAS. Une fois les quatre composants de couleur mis à l’échelle et biaisés, chacun est limité à la plage [0,1]. Toutes les valeurs d’échelle de couleurs et de biais sont spécifiées avec glPixelTransfer. Si GL_MAP_COLOR a la valeur true, chaque composant de couleur est mis à l’échelle en fonction de la taille de la carte de couleur à couleur correspondante, puis remplacé par le contenu de cette carte indexé par le composant mis à l’échelle. Autrement dit, le composant rouge est mis à l’échelle par GL_PIXEL_MAP_R_TO_R_SIZE, puis remplacé par le contenu de GL_PIXEL_MAP_R_TO_R indexé par lui-même. Le composant vert est mis à l’échelle par GL_PIXEL_MAP_G_TO_G_SIZE, puis remplacé par le contenu de GL_PIXEL_MAP_G_TO_G indexé par lui-même. Le composant bleu est mis à l’échelle par GL_PIXEL_MAP_B_TO_B_SIZE, puis remplacé par le contenu de GL_PIXEL_MAP_B_TO_B indexé par lui-même. Le composant alpha est mis à l’échelle par GL_PIXEL_MAP_A_TO_A_SIZE, puis remplacé par le contenu de GL_PIXEL_MAP_A_TO_A indexé par lui-même. Tous les composants extraits des cartes sont ensuite limités à la plage [0,1]. GL_MAP_COLOR est spécifié avec glPixelTransfer. Le contenu des différentes cartes est spécifié avec glPixelMap. |
Index de couleur | Chaque index de couleur est déplacé vers la gauche par GL_INDEX_SHIFT bits, en remplissant de zéros tous les bits au-delà du nombre de bits de fraction portés par l’index à point fixe. Si GL_INDEX_SHIFT est négatif, le décalage est à droite, là encore zéro rempli. GL_INDEX_OFFSET est ensuite ajouté à l’index. GL_INDEX_SHIFT et GL_INDEX_OFFSET sont spécifiés avec glPixelTransfer. À partir de ce point, l’opération diffère en fonction du format requis des pixels résultants. Si les pixels résultants doivent être écrits dans une mémoire tampon d’index de couleur ou s’ils sont en cours de lecture dans la mémoire cliente dans GL_COLOR_INDEX format, les pixels continuent d’être traités comme des index. Si GL_MAP_COLOR a la valeur true, chaque index est masqué par 2 ^ n 1, où n est GL_PIXEL_MAP_I_TO_I_SIZE, puis remplacé par le contenu de GL_PIXEL_MAP_I_TO_I indexé par la valeur masquée. GL_MAP_COLOR est spécifié avec glPixelTransfer. Le contenu de la carte d’index est spécifié avec glPixelMap. Si les pixels résultants doivent être écrits dans une mémoire tampon de couleurs RVBA, ou s’ils sont en cours de lecture dans la mémoire client dans un format autre que GL_COLOR_INDEX, les pixels sont convertis d’index en couleurs en référençant les quatre cartes 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. Avant déréférencement, l’index est masqué par 2 n 1, où n est GL_PIXEL_MAP_I_TO_R_SIZE pour la carte rouge, GL_PIXEL_MAP_I_TO_G_SIZE pour la carte verte, GL_PIXEL_MAP_I_TO_B_SIZE pour la carte bleue et GL_PIXEL_MAP_I_TO_A_SIZE pour la carte alpha. Tous les composants extraits des cartes sont ensuite serrés à la plage [0,1]. Le contenu des quatre cartes est spécifié avec glPixelMap. |
Profondeur | Chaque valeur de profondeur est multipliée par GL_DEPTH_SCALE, ajoutée à GL_DEPTH_BIAS, puis serrée à la plage [0,1]. |
Stencil | Chaque index est déplacé GL_INDEX_SHIFT bits comme un index de couleur, puis ajouté à GL_INDEX_OFFSET. Si GL_MAP_STENCIL a la valeur true, chaque index est masqué par 2n 1, où n est GL_PIXEL_MAP_S_TO_S_SIZE, puis remplacé par le contenu de GL_PIXEL_MAP_S_TO_S indexé par la valeur masquée. |
La fonction glPixelTransferf peut être utilisée pour définir n’importe quel paramètre de transfert de pixels. Si le type de paramètre est Boolean, 0.0 implique false et toute autre valeur implique true. Si pname est un paramètre entier, param est arrondi à l’entier le plus proche.
De même, glPixelTransferi peut également être utilisé pour définir l’un des paramètres de transfert de pixels. Les paramètres booléens sont définis sur false si param est 0 et true dans le cas contraire. Le paramètre param est converti en virgule flottante avant d’être affecté à des paramètres à valeur réelle.
Si une commande glDrawPixels, glReadPixels, glCopyPixels, glTexImage1D ou glTexImage2D est placée dans une liste d’affichage (voir glNewList et glCallList), les paramètres de mode de transfert de pixels en vigueur lors de l’exécution de la liste d’affichage sont ceux utilisés. Ils peuvent être différents des paramètres lorsque la commande a été compilée dans la liste d’affichage.
Les fonctions suivantes récupèrent des informations relatives à glPixelTransfer :
glGet avec argument GL_MAP_COLOR
glGet avec argument GL_MAP_STENCIL
glGet avec argument GL_INDEX_SHIFT
glGet avec argument GL_INDEX_OFFSET
glGet avec argument GL_RED_SCALE
glGet avec argument GL_RED_BIAS
glGet avec argument GL_GREEN_SCALE
glGet avec argument GL_GREEN_BIAS
glGet avec argument GL_BLUE_SCALE
glGet avec argument GL_BLUE_BIAS
glGet avec argument GL_ALPHA_SCALE
glGet avec argument GL_ALPHA_BIAS
glGet avec argument GL_DEPTH_SCALE
glGet avec argument GL_DEPTH_BIAS
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 |
|
Bibliothèque |
|
DLL |
|