--- 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);
target
gl.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面。level
internalformat
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_COMPONENT
gl.DEPTH_STENCIL
ext.SRGB_EXT
ext.SRGB_ALPHA_EXT
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_ALPHA8
gl.RGB5_A1
gl.RGB10_A2
gl.RGBA4
gl.RGBA16F
gl.RGBA32F
gl.RGBA8UI
width
height
border
format
internalformat
相同(查看上面). 在WebGL 2中, 这张表中列出了这些组合。type
gl.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_SHORT
gl.UNSIGNED_INT
ext.UNSIGNED_INT_24_8_WEBGL
(constant provided by the extension)gl.FLOAT
ext.HALF_FLOAT_OES
(constant provided by the extension)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
(pixels must be {{jsxref("null")}})pixels
type
是 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")}}