Glu.Build1DMipmaps (gb.opengl.glu)
Static Function Build1DMipmaps ( Image As Image ) As Integer
Construit un "mipmap" mono-dimensionnel.
Paramètres
- target
-
Spécifie la texture cible. elle doit être Glu.TEXTURE_1D.
- internalFormat
-
Demande le stockage interne de la texture d'image . La version
la plus courante de l'implémentation SGI de GLU ne vérifie pas la validité
de cette valeur avant de la passer à l'implémentation OpenGL sous-jacente.
Une valeur qui n'est pas acceptée par l'implémentation OpenGL produira une erreur OpenGL.
Le bénéfice de ne pas vérifier cette valeur au niveau GLU est que
les extensions OpenGL peuvent ajouter de nouveaux formats internes
de textures sans nécessiter une révision de l'implémentation GLU.
Les plus anciennes implémentations de GLU vérifient cette valeur et lèvent
une erreur GLU si ce n'est pas 1, 2, 3, ou 4 ou l'une des constantes symboliques suivantes :
Glu.ALPHA,
Glu.ALPHA4,
Glu.ALPHA8,
Glu.ALPHA12,
Glu.ALPHA16,
Glu.LUMINANCE,
Glu.LUMINANCE4,
Glu.LUMINANCE8,
Glu.LUMINANCE12,
Glu.LUMINANCE16,
Glu.LUMINANCE_ALPHA,
Glu.LUMINANCE4_ALPHA4,
Glu.LUMINANCE6_ALPHA2,
Glu.LUMINANCE8_ALPHA8,
Glu.LUMINANCE12_ALPHA4,
Glu.LUMINANCE12_ALPHA12,
Glu.LUMINANCE16_ALPHA16,
Glu.INTENSITY,
Glu.INTENSITY4,
Glu.INTENSITY8,
Glu.INTENSITY12,
Glu.INTENSITY16,
Glu.RGB,
Glu.R3_G3_B2,
Glu.RGB4,
Glu.RGB5,
Glu.RGB8,
Glu.RGB10,
Glu.RGB12,
Glu.RGB16,
Glu.RGBA,
Glu.RGBA2,
Glu.RGBA4,
Glu.RGB5_A1,
Glu.RGBA8,
Glu.RGB10_A2,
Glu.RGBA12, or
Glu.RGBA16.
- width
-
Spécifie la largeur, en pixels, de l'image de texture .
- format
-
Spécifie le format des données pixel.
Ce doit être
Glu.COLOR_INDEX,
Glu.DEPTH_COMPONENT,
Glu.RED,
Glu.GREEN,
Glu.BLUE,
Glu.ALPHA,
Glu.RGB,
Glu.RGBA,
Glu.BGR,
Glu.BGRA,
Glu.LUMINANCE, or
Glu.LUMINANCE_ALPHA.
- type
-
Specifies the data type for data.
Must be one of
Glu.UNSIGNED_BYTE,
Glu.BYTE,
Glu.BITMAP,
Glu.UNSIGNED_SHORT,
Glu.SHORT,
Glu.UNSIGNED_INT,
Glu.INT,
Glu.FLOAT,
Glu.UNSIGNED_BYTE_3_3_2,
Glu.UNSIGNED_BYTE_2_3_3_REV,
Glu.UNSIGNED_SHORT_5_6_5,
Glu.UNSIGNED_SHORT_5_6_5_REV,
Glu.UNSIGNED_SHORT_4_4_4_4,
Glu.UNSIGNED_SHORT_4_4_4_4_REV,
Glu.UNSIGNED_SHORT_5_5_5_1,
Glu.UNSIGNED_SHORT_1_5_5_5_REV,
Glu.UNSIGNED_INT_8_8_8_8,
Glu.UNSIGNED_INT_8_8_8_8_REV,
Glu.UNSIGNED_INT_10_10_10_2, or
Glu.UNSIGNED_INT_2_10_10_10_REV.
- data
-
Spécifie un pointeur vers les données image en mémoire.
Description
Glu.Build1DMipmaps construit une série de cartes de textures mono-dimensionnelles pré-filtrées de résolution décroissante appelée un "mipmap". Ceci est utilisé pour l’anticrénelage de primitives de texture "mappées" .
Une valeur de retour zéro indique le succès, sinon un code erreur GLU est retourné (voir Glu.ErrorString).
Initialement, la largeur de
data est vérifiée pour voir si c'est une puissance de 2.
Si ce n'est pas le cas, une copie de
data est mise à l’échelle vers le haut ou vers le bas à la puissance de 2 la plus proche. (Si
width est exactement entre 2 puissances de 2, la copie de
data sera redimensionnée vers le haut.) Cette copie sera utilisée pour des opérations de mipmapping subséquentes décrites ci dessous.
Par exemple, si
width vaut 57, une copie de
data sera agrandie à 64 avant que le mipmapping ait lieu.
Ensuite, les textures proxy (voir Gl.TexImage1D) sont utilisées pour déterminer si l’implémentation peut concorder avec la texture demandée. Si ce n'est pas le cas,
width est continuellement réduite de moitié jusqu'à ce qu'elle concorde.
Puis, une serie de niveaux mipmap est construite en réduisant de moitié une copie de
data jusqu'à ce que la taille
soit atteinte. A chaque niveau, chaque texel du niveau mipmap réduit est une moyenne des deux texel correspondants du niveau mipmap supérieur.
Gl.TexImage1D est appelé pour charger chacun de ces niveaux de mipmap.
Le niveau 0 est une copie de
data.
Le plus haut niveau est
.
Par exemple, si
width vaut 64 et que l’implémentation peut stoker une texture de cette taille, les niveaux de mipmap suivants sont construits :
,
,
,
,
,
,
et
.
Ils correspondent aux niveaux 0 à 6, respectivement.
Voir la page de référence de Gl.TexImage1D pour une description des valeurs acceptées pour le parametre
type.
Voir la page de référence de Gl.DrawPixels pour une description des valeurs acceptées pour le parametre
data.
Notes
Notez qu'il n'y a pas de moyen direct de requérir le niveau maximum. Il peut être déduit indirectement via Gl.GetTexLevelParameter. Demandez d'abord la largeur utilisée actuellement au niveau 0.
(La largeur peut être différente de
width puisque les textures proxy peuvent avoir été redimensionnées pour s’accorder à l’implémentation.)
Le niveau maximum peut être évalué à partir de la formule
.
Les formats Glu.BGR, et Glu.BGRA, et les types
Glu.UNSIGNED_BYTE_3_3_2,
Glu.UNSIGNED_BYTE_2_3_3_REV,
Glu.UNSIGNED_SHORT_5_6_5,
Glu.UNSIGNED_SHORT_5_6_5_REV,
Glu.UNSIGNED_SHORT_4_4_4_4,
Glu.UNSIGNED_SHORT_4_4_4_4_REV,
Glu.UNSIGNED_SHORT_5_5_5_1,
Glu.UNSIGNED_SHORT_1_5_5_5_REV,
Glu.UNSIGNED_INT_8_8_8_8,
Glu.UNSIGNED_INT_8_8_8_8_REV,
Glu.UNSIGNED_INT_10_10_10_2, and
Glu.UNSIGNED_INT_2_10_10_10_REV ne sont disponibles que pour les versions GL
1.2 ou supérieures, et si la version de GLU est 1.3 ou supérieure.
Erreurs
Glu.INVALID_VALUE est retourné si
width est < 1.
Glu.INVALID_ENUM est retourné si
format ou
type ne sont pas valides.
Glu.INVALID_OPERATION est retourné si
type est Glu.UNSIGNED_BYTE_3_3_2 ou Glu.UNSIGNED_BYTE_2_3_3_REV
et
format n'est pas Glu.RGB.
Glu.INVALID_OPERATION est retourné si
type est Glu.UNSIGNED_SHORT_5_6_5 ou Glu.UNSIGNED_SHORT_5_6_5_REV
et
format n'est pas Glu.RGB.
Glu.INVALID_OPERATION est retourné si
type est Glu.UNSIGNED_SHORT_4_4_4_4 ou Glu.UNSIGNED_SHORT_4_4_4_4_REV
et
format n'est pas Glu.RGBA ni Glu.BGRA.
Glu.INVALID_OPERATION est retourné si
type est Glu.UNSIGNED_SHORT_5_5_5_1 ou Glu.UNSIGNED_SHORT_1_5_5_5_REV
et_format_ n'est pas Glu.RGBA ni Glu.BGRA.
Glu.INVALID_OPERATION est retourné si
type est Glu.UNSIGNED_INT_8_8_8_8 ou Glu.UNSIGNED_INT_8_8_8_8_REV
et
format n'est pas Glu.RGBA ni Glu.BGRA.
Glu.INVALID_OPERATION est retourné si
type est Glu.UNSIGNED_INT_10_10_10_2 ou Glu.UNSIGNED_INT_2_10_10_10_REV
et
format n'est pas Glu.RGBA ni Glu.BGRA.
Voir aussi
Glu.Build1DMipmapLevels,
Glu.Build2DMipmapLevels,
Glu.Build3DMipmapLevels,
Glu.Build3DMipmaps,
Glu.ErrorString,
Gl.DrawPixels,
Gl.GetTexImage,
Gl.GetTexLevelParameter,
Gl.TexImage1D,
Gl.TexImage2D,
Gl.TexImage3D
Voir la documentation originale sur le site web OpenGL