--- title: WebGLRenderingContext.texImage2D() slug: Web/API/WebGLRenderingContext/texImage2D translation_of: Web/API/WebGLRenderingContext/texImage2D ---
WebGL API 的WebGLRenderingContext.texImage2D() 方法指定了二维纹理图像。
// WebGL1: void gl.texImage2D(target, level, internalformat, width, height, border, format, type, ArrayBufferView? pixels); void gl.texImage2D(target, level, internalformat, format, type, ImageData? pixels); void gl.texImage2D(target, level, internalformat, format, type, HTMLImageElement? pixels); void gl.texImage2D(target, level, internalformat, format, type, HTMLCanvasElement? pixels); void gl.texImage2D(target, level, internalformat, format, type, HTMLVideoElement? pixels); void gl.texImage2D(target, level, internalformat, format, type, ImageBitmap? pixels); // WebGL2: void gl.texImage2D(target, level, internalformat, width, height, border, format, type, GLintptr offset); void gl.texImage2D(target, level, internalformat, width, height, border, format, type, HTMLCanvasElement source); void gl.texImage2D(target, level, internalformat, width, height, border, format, type, HTMLImageElement source); void gl.texImage2D(target, level, internalformat, width, height, border, format, type, HTMLVideoElement source); void gl.texImage2D(target, level, internalformat, width, height, border, format, type, ImageBitmap source); void gl.texImage2D(target, level, internalformat, width, height, border, format, type, ImageData source); void gl.texImage2D(target, level, internalformat, width, height, border, format, type, ArrayBufferView srcData, srcOffset);
targetgl.TEXTURE_2D: 二维纹理贴图.gl.TEXTURE_CUBE_MAP_POSITIVE_X:立方体映射纹理的正X面。gl.TEXTURE_CUBE_MAP_NEGATIVE_X: 立方体映射纹理的负X面。gl.TEXTURE_CUBE_MAP_POSITIVE_Y: 立方体映射纹理的正Y面。gl.TEXTURE_CUBE_MAP_NEGATIVE_Y: 立方体映射纹理的负Y面。gl.TEXTURE_CUBE_MAP_POSITIVE_Z: 立方体映射纹理的正Z面。gl.TEXTURE_CUBE_MAP_NEGATIVE_Z: 立方体映射纹理的负Z面。levelinternalformat| Format | Type | Channels | Bytes per pixel |
| RGBA | UNSIGNED_BYTE | 4 | 4 |
| RGB | UNSIGNED_BYTE | 3 | 3 |
| RGBA | UNSIGNED_SHORT_4_4_4_4 | 4 | 2 |
| RGBA | UNSIGNED_SHORT_5_5_5_1 | 4 | 2 |
| RGB | UNSIGNED_SHORT_5_6_5 | 3 | 2 |
| LUMINANCE_ALPHA | UNSIGNED_BYTE | 2 | 2 |
| LUMINANCE | UNSIGNED_BYTE | 1 | 1 |
| ALPHA | UNSIGNED_BYTE | 1 | 1 |
ArrayBufferView 或 GLintptr offset的 texImage2D 版本,其它可能的值| Sized Format |
Base Format |
R bits |
G bits |
B bits |
A bits |
Shared bits |
Color renderable |
Texture filterable |
| R8 | RED | 8 | ● | ● | ||||
| R8_SNORM | RED | s8 | ● | |||||
| RG8 | RG | 8 | 8 | ● | ● | |||
| RG8_SNORM | RG | s8 | s8 | ● | ||||
| RGB8 | RGB | 8 | 8 | 8 | ● | ● | ||
| RGB8_SNORM | RGB | s8 | s8 | s8 | ● | |||
| RGB565 | RGB | 5 | 6 | 5 | ● | ● | ||
| RGBA4 | RGBA | 4 | 4 | 4 | 4 | ● | ● | |
| RGB5_A1 | RGBA | 5 | 5 | 5 | 1 | ● | ● | |
| RGBA8 | RGBA | 8 | 8 | 8 | 8 | ● | ● | |
| RGBA8_SNORM | RGBA | s8 | s8 | s8 | s8 | ● | ||
| RGB10_A2 | RGBA | 10 | 10 | 10 | 2 | ● | ● | |
| RGB10_A2UI | RGBA | ui10 | ui10 | ui10 | ui2 | ● | ||
| SRGB8 | RGB | 8 | 8 | 8 | ● | |||
| SRGB8_ALPHA8 | RGBA | 8 | 8 | 8 | 8 | ● | ● | |
| R16F | RED | f16 | ● | |||||
| RG16F | RG | f16 | f16 | ● | ||||
| RGB16F | RGB | f16 | f16 | f16 | ● | |||
| RGBA16F | RGBA | f16 | f16 | f16 | f16 | ● | ||
| R32F | RED | f32 | ||||||
| RG32F | RG | f32 | f32 | |||||
| RGB32F | RGB | f32 | f32 | f32 | ||||
| RGBA32F | RGBA | f32 | f32 | f32 | f32 | |||
| R11F_G11F_B10F | RGB | f11 | f11 | f10 | ● | |||
| RGB9_E5 | RGB | 9 | 9 | 9 | 5 | ● | ||
| R8I | RED | i8 | ● | |||||
| R8UI | RED | ui8 | ● | |||||
| R16I | RED | i16 | ● | |||||
| R16UI | RED | ui16 | ● | |||||
| R32I | RED | i32 | ● | |||||
| R32UI | RED | ui32 | ● | |||||
| RG8I | RG | i8 | i8 | ● | ||||
| RG8UI | RG | ui8 | ui8 | ● | ||||
| RG16I | RG | i16 | i16 | ● | ||||
| RG16UI | RG | ui16 | ui16 | ● | ||||
| RG32I | RG | i32 | i32 | ● | ||||
| RG32UI | RG | ui32 | ui32 | ● | ||||
| RGB8I | RGB | i8 | i8 | i8 | ||||
| RGB8UI | RGB | ui8 | ui8 | ui8 | ||||
| RGB16I | RGB | i16 | i16 | i16 | ||||
| RGB16UI | RGB | ui16 | ui16 | ui16 | ||||
| RGB32I | RGB | i32 | i32 | i32 | ||||
| RGB32UI | RGB | ui32 | ui32 | ui32 | ||||
| RGBA8I | RGBA | i8 | i8 | i8 | i8 | ● | ||
| RGBA8UI | RGBA | ui8 | ui8 | ui8 | ui8 | ● | ||
| RGBA16I | RGBA | i16 | i16 | i16 | i16 | ● | ||
| RGBA16UI | RGBA | ui16 | ui16 | ui16 | ui16 | ● | ||
| RGBA32I | RGBA | i32 | i32 | i32 | i32 | ● | ||
| RGBA32UI | RGBA | ui32 | ui32 | ui32 | ui32 | ● |
在WebGL2 中,使用HTMLImageElement, HTMLCanvasElement, HTMLVideoElement, ImageBitmap, 或 ImageData作为texImage2D 纹理的版本中,可能的值有:
gl.ALPHA: 抛弃红色、绿色和蓝色组件并读取alpha组件。gl.RGB:抛弃alpha组件,读取红色、绿色和蓝色组件。gl.RGBA: 从颜色缓冲区读取红色、绿色、蓝色和alpha组件。gl.LUMINANCE: E每个颜色组件是一个亮度组件,alpha值为1.0。gl.LUMINANCE_ALPHA: 每个组件都是亮度/alpha组件。gl.DEPTH_COMPONENTgl.DEPTH_STENCILext.SRGB_EXText.SRGB_ALPHA_EXTgl.R8gl.R16Fgl.R32Fgl.R8UIgl.RG8gl.RG16Fgl.RG32Fgl.RG8UIgl.RG16UIgl.RG32UIgl.RGB8gl.SRGB8gl.RGB565gl.R11F_G11F_B10Fgl.RGB9_E5gl.RGB16Fgl.RGB32Fgl.RGB8UIgl.RGBA8gl.SRGB8_ALPHA8gl.RGB5_A1gl.RGB10_A2gl.RGBA4gl.RGBA16Fgl.RGBA32Fgl.RGBA8UIwidthheightborderformatinternalformat 相同(查看上面). 在WebGL 2中, 这张表中列出了这些组合。typegl.UNSIGNED_BYTE: gl.RGBA每个通道8位gl.UNSIGNED_SHORT_5_6_5: 5 bits红, 6 bits绿, 5 bits蓝gl.UNSIGNED_SHORT_4_4_4_4: 4 bits红, 4 bits绿, 4 bits蓝, 4 alpha bits.gl.UNSIGNED_SHORT_5_5_5_1: 5 bits红, 5 bits绿, 5 bits蓝, 1 alpha bit.gl.UNSIGNED_SHORTgl.UNSIGNED_INText.UNSIGNED_INT_24_8_WEBGL (constant provided by the extension)gl.FLOAText.HALF_FLOAT_OES (constant provided by the extension)gl.BYTEgl.UNSIGNED_SHORTgl.SHORTgl.UNSIGNED_INTgl.INTgl.HALF_FLOATgl.FLOATgl.UNSIGNED_INT_2_10_10_10_REVgl.UNSIGNED_INT_10F_11F_11F_REVgl.UNSIGNED_INT_5_9_9_9_REVgl.UNSIGNED_INT_24_8gl.FLOAT_32_UNSIGNED_INT_24_8_REV (pixels must be {{jsxref("null")}})pixelstype 是 gl.UNSIGNED_BYTE则必须使用type 是 gl.UNSIGNED_SHORT_5_6_5, gl.UNSIGNED_SHORT_4_4_4_4, gl.UNSIGNED_SHORT_5_5_5_1, gl.UNSIGNED_SHORT 或ext.HALF_FLOAT_OES则必须使用type 是 gl.UNSIGNED_INT 或ext.UNSIGNED_INT_24_8_WEBGL则必须使用type 是 gl.FLOAT则必须使用WebGLBuffer 范围到PIXEL_UNPACK_BUFFER 目标。(仅在WebGL 2中 )None.
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
| Specification | Status | Comment |
|---|---|---|
| {{SpecName('WebGL', "#5.14.8", "texImage2D")}} | {{Spec2('WebGL')}} | WebGL.初始定义 |
| {{SpecName('OpenGL ES 2.0', "glTexImage2D.xml", "glTexImage2D")}} | {{Spec2('OpenGL ES 2.0')}} | OpenGL ES 2.0 API手册(类似). |
| {{SpecName('WebGL2', "#3.7.6", "texImage2D")}} | {{Spec2('WebGL2')}} | WebGL更新定义. |
| {{SpecName('OpenGL ES 3.0', "glTexImage2D.xhtml", "glTexImage2D")}} | {{Spec2('OpenGL ES 3.0')}} | OpenGL ES 3.0 API手册(类似). |
{{Compat("api.WebGLRenderingContext.texImage2D")}}