WebGLRenderingContext.texImage2D()
==================================

La méthode **`WebGLRenderingContext.texImage2D()`** de l'API WebGL spécifie une image de texture bidimensionnelle.

Syntaxe
-------


```js
// WebGL1:
void gl.texImage2D(cible, niveau, formatinterne, largeur, hauteur, bordure, format, type, ArrayBufferView? pixels);
void gl.texImage2D(cible, niveau, formatinterne, format, type, ImageData? pixels);
void gl.texImage2D(cible, niveau, formatinterne, format, type, HTMLImageElement? pixels);
void gl.texImage2D(cible, niveau, formatinterne, format, type, HTMLCanvasElement? pixels);\void gl.texImage2D(cible, niveau, formatinterne, format, type, HTMLVideoElement? pixels);

// WebGL2:
void gl.texImage2D(cible, niveau, formatinterne, largeur, hauteur, bordure, format, type, GLintptr decalage);
void gl.texImage2D(cible, niveau, formatinterne, largeur, hauteur, bordure, format, type, HTMLCanvasElement source);
void gl.texImage2D(cible, niveau, formatinterne, largeur, hauteur, bordure, format, type, HTMLImageElement source);
void gl.texImage2D(cible, niveau, formatinterne, largeur, hauteur, bordure, format, type, HTMLVideoElement source);
void gl.texImage2D(cible, niveau, formatinterne, largeur, hauteur, bordure, format, type, ImageBitmap source);
void gl.texImage2D(cible, niveau, formatinterne, largeur, hauteur, bordure, format, type, ImageData source);
void gl.texImage2D(cible, niveau, formatinterne, largeur, hauteur, bordure, format, type, ArrayBufferView donneesSrc, decalageSrc);
```

### Paramètres

`cible`

Un `GLenum` (en-US) indiquant le point de liaison (cible) de la texture active. Valeurs possibles :

* `gl.TEXTURE_2D` : une texture bidimensionnelle ;
* `gl.TEXTURE_CUBE_MAP_POSITIVE_X` : face X positive pour une texture mappée sur un cube ;
* `gl.TEXTURE_CUBE_MAP_NEGATIVE_X` : face X négative pour une texture mappée sur un cube ;
* `gl.TEXTURE_CUBE_MAP_POSITIVE_Y` : face Y positive pour une texture mappée sur un cube ;
* `gl.TEXTURE_CUBE_MAP_NEGATIVE_Y` : face Y négative pour une texture mappée sur un cube ;
* `gl.TEXTURE_CUBE_MAP_POSITIVE_Z` : face Z positive pour une texture mappée sur un cube ;
* `gl.TEXTURE_CUBE_MAP_NEGATIVE_Z` : face Z négative pour une texture mappée sur un cube.

`niveau`

Un `GLint` (en-US) indiquant le niveau de détail. Le niveau 0 est le niveau de l'image de base et le niveau n est le n-ième niveau de réduction du mipmap.

`formatinterne`

Un `GLint` (en-US) indiquant les composantes de couleur dans la texture. Valeurs possibles :

* `gl.ALPHA` : ignore les composantes rouge, vert et bleu, et lit la composante alpha ;
* `gl.RGB` : ignore la composante alpha et lit les composantes rouge, vert et bleu ;
* `gl.RGBA` : les composantes rouge, vert, bleu et alpha sont lues à partir du tampon des couleurs ;
* `gl.LUMINANCE` : chaque composante de couleur est une composante de luminance, alpha vaut 1,0 ;
* `gl.LUMINANCE_ALPHA` : chaque composante est une composante de luminance/alpha ;
* lors de l'utilisation de l'extension `WEBGL_depth_texture` (en-US) :
    + `gl.DEPTH_COMPONENT`
    + `gl.DEPTH_STENCIL`
* lors de l'utilisation de l'extension `EXT_sRGB` (en-US) :
    + `ext.SRGB_EXT`
    + `ext.SRGB_ALPHA_EXT`
* Lors de l'utilisation d'un WebGL 2 context, les valeurs suivantes sont en outre disponibles :
    + `gl.R8`
    + `gl.R16F`
    + `gl.R32F`
    + `gl.R8UI`
    + `gl.RG8`
    + `gl.RG16F`
    + `gl.RG32F`
    + `gl.RG8UI`
    + `gl.RG16UI`
    + `gl.RG32UI`
    + `gl.RGB8`
    + `gl.SRGB8`
    + `gl.RGB565`
    + `gl.R11F_G11F_B10F`
    + `gl.RGB9_E5`
    + `gl.RGB16F`
    + `gl.RGB32F`
    + `gl.RGB8UI`
    + `gl.RGBA8`
    + `gl.SRGB8_APLHA8`
    + `gl.RGB5_A1`
    + `gl.RGB10_A2`
    + `gl.RGBA4`
    + `gl.RGBA16F`
    + `gl.RGBA32F`
    + `gl.RGBA8UI`

`largeur`

Un `GLsizei` (en-US) indiquant la largeur de la texture.

`hauteur`

Un `GLsizei` (en-US) indiquant la hauteur de la texture.

`bordure`

Un `GLint` (en-US) indiquant la largeur de la bordure. Doit être 0.

`format`

Un `GLenum` (en-US) indiquant le format des données de texel. En WebGL 1, cela doit être identique à `formatinterne` (voir ci-dessus). En WebGL 2, les combinaisons sont répertoriées dans ce tableau.

`type`

Un `GLenum` (en-US) indiquant le type de données des données de texel. Valeurs possibles :

* `gl.UNSIGNED_BYTE` : 8 bits par canal pour `gl.RGBA` ;
* `gl.UNSIGNED_SHORT_5_6_5` : 5 bits de rouge, 6 bits de vert, 5 bits de bleu ;
* `gl.UNSIGNED_SHORT_4_4_4_4` : 4 bits de rouge, 4 bits de vert, 4 bits de bleu, 4 bits d'alpha ;
* `gl.UNSIGNED_SHORT_5_5_5_1` : 5 bits de rouge, 5 bits de vert, 5 bits de bleu, 1 bit d'alpha ;
* lors de l'utilisation de l'extension `WEBGL_depth_texture` (en-US) :
    + `gl.UNSIGNED_SHORT`
    + `gl.UNSIGNED_INT`
    + `ext.UNSIGNED_INT_24_8_WEBGL` (constante fournie par l'extension)
* lors de l'utilisation de l'extension `OES_texture_float` (en-US) :
    + `gl.FLOAT`
* lors de l'utilisation de l'extension `OES_texture_half_float` (en-US) :
    + `ext.HALF_FLOAT_OES` (constante fournie par l'extension)
* lors de l'utilisation d'un WebGL 2 context, les valeurs suivantes sont en outre disponibles :
    + `gl.BYTE`
    + `gl.UNSIGNED_SHORT`
    + `gl.SHORT`
    + `gl.UNSIGNED_INT`
    + `gl.INT`
    + `gl.HALF_FLOAT`
    + `gl.FLOAT`
    + `gl.UNSIGNED_INT_2_10_10_10_REV`
    + `gl.UNSIGNED_INT_10F_11F_11F_REV`
    + `gl.UNSIGNED_INT_5_9_9_9_REV`
    + `gl.UNSIGNED_INT_24_8`
    + `gl.FLOAT_32_UNSIGNED_INT_24_8_REV` (les pixels doivent être `null`)

`pixels`

L'un des objets suivants peut être utilisé comme source de pixels pour la texture :

* `ArrayBufferView` (en-US),
    + un `Uint8Array` doit être utilisé si `type` est `gl.UNSIGNED_BYTE` ;
    + un `Uint16Array` doit être utilisé si `type` est `gl.UNSIGNED_SHORT_5_6_5`, `gl.UNSIGNED_SHORT_4_4_4_4`, `gl.UNSIGNED_SHORT_5_5_5_1`, `gl.UNSIGNED_SHORT` ou `ext.HALF_FLOAT_OES` ;
    + un `Uint32Array` doit être utilisé si `type` est `gl.UNSIGNED_INT` ou `ext.UNSIGNED_INT_24_8_WEBGL` ;
    + un `Float32Array` doit être utilisé si `type` est `gl.FLOAT` ;
* `ImageData`,
* `HTMLImageElement`,
* `HTMLCanvasElement`,
* `HTMLVideoElement`,
* `ImageBitmap` (en-US).

**`decalage`**

(WebGL 2 seulement) Un décalage en octets `GLintptr` (en-US) dans le magasin de données du `WebGLBuffer`. Utilisé pour télécharger des données vers la `WebGLTexture` liée, depuis le `WebGLBuffer` lié à la cible `PIXEL_UNPACK_BUFFER`.

### Valeur retournée

Aucune.

Exemples
--------


```js
gl.texImage2D(gl.TEXTURE\_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED\_BYTE, image);
```

Spécifications
--------------

| Specification |
| --- |
| WebGL Specification # 5.14.8 |
| WebGL 2.0 Specification # 3.7.6 |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `WebGLRenderingContext.createTexture()`
* `WebGLRenderingContext.bindTexture()`
* `WebGLRenderingContext.texSubImage2D()` (en-US)
* `WebGLRenderingContext.compressedTexImage2D()` (en-US)
* `WebGLRenderingContext.copyTexImage2D()` (en-US)
* `WebGLRenderingContext.getTexParameter()`
* `WEBGL_depth_texture` (en-US)
* `OES_texture_float` (en-US)
* `OES_texture_half_float` (en-US)
* `EXT_sRGB` (en-US)