Documentation de Gambas - /comp/gb.opengl.glu/glu/build1dmipmaps

/comp/gb.opengl.glu/glu/build1dmipmaps

# 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 1 × 1 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 log 2 ⁡ width . 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 : 64 × 1 , 32 × 1 , 16 × 1 , 8 × 1 , 4 × 1 , 2 × 1 , et 1 × 1 . 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 log 2 ⁡ width .

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.Build2DMipmaps,

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