WebGLRenderingContext: compressedTexImage2D() method
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
* Some parts of this feature may have varying levels of support.
Note: This feature is available in Web Workers.
Phương thức compressedTexImage2D() của giao diện WebGLRenderingContext của WebGL API chỉ định một hình ảnh kết cấu hai chiều ở định dạng nén.
Các định dạng ảnh nén chỉ có sẵn thông qua WebGL2RenderingContext hoặc một số Phần mở rộng WebGL.
Cú pháp
// WebGL 1:
compressedTexImage2D(target, level, internalformat, width, height, border, srcData)
// Additionally available in WebGL 2:
compressedTexImage2D(target, level, internalformat, width, height, border, srcData, srcOffset)
compressedTexImage2D(target, level, internalformat, width, height, border, srcData, srcOffset, srcLengthOverride)
compressedTexImage2D(target, level, internalformat, width, height, border, imageSize, offset)
Thông số
target-
Một
GLenumchỉ định điểm liên kết (đích) của kết cấu nén hoạt động. Các giá trị có thể:gl.TEXTURE_2D: Một kết cấu hai chiều.gl.TEXTURE_CUBE_MAP_POSITIVE_X: Mặt X dương cho kết cấu dạng khối lập phương.gl.TEXTURE_CUBE_MAP_NEGATIVE_X: Mặt X âm cho kết cấu được ánh xạ hình khối.gl.TEXTURE_CUBE_MAP_POSITIVE_Y: Mặt Y dương cho kết cấu dạng khối lập phương.gl.TEXTURE_CUBE_MAP_NEGATIVE_Y: Mặt Y âm cho kết cấu được ánh xạ hình khối.gl.TEXTURE_CUBE_MAP_POSITIVE_Z: Mặt Z dương cho kết cấu dạng khối lập phương.gl.TEXTURE_CUBE_MAP_NEGATIVE_Z: Mặt Z âm cho kết cấu dạng khối lập phương.
level-
A
GLintxác định mức độ chi tiết. Cấp 0 là cấp độ hình ảnh cơ sở và cấp độ n là cấp độ giảm mipmap thứ n. internalformat-
A
GLenumchỉ định định dạng ảnh nén. Các định dạng ảnh nén chỉ có sẵn thông quaWebGL2RenderingContexthoặc một số Phần mở rộng WebGL. Các giá trị có thể:-
Khi sử dụng
WebGL2RenderingContext:gl.GL_COMPRESSED_R11_EACgl.GL_COMPRESSED_SIGNED_R11_EACgl.GL_COMPRESSED_RG11_EACgl.GL_COMPRESSED_SIGNED_RG11_EACgl.GL_COMPRESSED_RGB8_ETC2gl.GL_COMPRESSED_SRGB8_ETC2gl.GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2gl.GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2gl.GL_COMPRESSED_RGBA8_ETC2_EACgl.GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
-
Khi sử dụng phần mở rộng
WEBGL_compressed_texture_s3tc:ext.COMPRESSED_RGB_S3TC_DXT1_EXText.COMPRESSED_RGBA_S3TC_DXT1_EXText.COMPRESSED_RGBA_S3TC_DXT3_EXText.COMPRESSED_RGBA_S3TC_DXT5_EXT
-
Khi sử dụng phần mở rộng
WEBGL_compressed_texture_s3tc_srgb:ext.COMPRESSED_SRGB_S3TC_DXT1_EXText.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXText.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXText.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT
-
Khi sử dụng phần mở rộng
WEBGL_compressed_texture_etc:ext.COMPRESSED_R11_EACext.COMPRESSED_SIGNED_R11_EACext.COMPRESSED_RG11_EACext.COMPRESSED_SIGNED_RG11_EACext.COMPRESSED_RGB8_ETC2ext.COMPRESSED_RGBA8_ETC2_EACext.COMPRESSED_SRGB8_ETC2ext.COMPRESSED_SRGB8_ALPHA8_ETC2_EACext.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2ext.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
-
Khi sử dụng phần mở rộng
WEBGL_compressed_texture_pvrtc:ext.COMPRESSED_RGB_PVRTC_4BPPV1_IMGext.COMPRESSED_RGBA_PVRTC_4BPPV1_IMGext.COMPRESSED_RGB_PVRTC_2BPPV1_IMGext.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG
-
Khi sử dụng phần mở rộng
WEBGL_compressed_texture_etc1:ext.COMPRESSED_RGB_ETC1_WEBGL
-
Khi sử dụng phần mở rộng
WEBGL_compressed_texture_astc:ext.COMPRESSED_RGBA_ASTC_4x4_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHRext.COMPRESSED_RGBA_ASTC_5x4_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHRext.COMPRESSED_RGBA_ASTC_5x5_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHRext.COMPRESSED_RGBA_ASTC_6x5_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHRext.COMPRESSED_RGBA_ASTC_6x6_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHRext.COMPRESSED_RGBA_ASTC_8x5_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHRext.COMPRESSED_RGBA_ASTC_8x6_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHRext.COMPRESSED_RGBA_ASTC_8x8_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHRext.COMPRESSED_RGBA_ASTC_10x5_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHRext.COMPRESSED_RGBA_ASTC_10x6_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHRext.COMPRESSED_RGBA_ASTC_10x6_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHRext.COMPRESSED_RGBA_ASTC_10x10_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHRext.COMPRESSED_RGBA_ASTC_12x10_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHRext.COMPRESSED_RGBA_ASTC_12x12_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR
-
Khi sử dụng phần mở rộng
EXT_texture_compression_bptc:ext.COMPRESSED_RGBA_BPTC_UNORM_EXText.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXText.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXText.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT
-
Khi sử dụng phần mở rộng
EXT_texture_compression_rgtc:ext.COMPRESSED_RED_RGTC1_EXText.COMPRESSED_SIGNED_RED_RGTC1_EXText.COMPRESSED_RED_GREEN_RGTC2_EXText.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT
-
width-
Một
GLsizeichỉ định chiều rộng của kết cấu bằng texels. height-
Một
GLsizeixác định chiều cao của kết cấu tính bằng texels. depth-
Một
GLsizeixác định độ sâu của kết cấu/số lượng kết cấu trong mộtTEXTURE_2D_ARRAY. border-
A
GLintchỉ định độ rộng của đường viền. Phải là 0.
Nguồn kết cấu có thể được cung cấp theo một trong hai cách: từ ArrayBuffer (có thể được chia sẻ) sử dụng srcData, srcOffset, và srcLengthOverride; hoặc, trong WebGL 2, từ gl.PIXEL_UNPACK_BUFFER sử dụng imageSize và offset.
srcData-
Một
TypedArrayhoặcDataViewchứa dữ liệu kết cấu được nén. srcOffsetOptional-
(chỉ WebGL 2) Một số nguyên xác định chỉ số của
srcDatađể bắt đầu đọc từ đó. Mặc định là0. srcLengthOverrideOptional-
(chỉ WebGL 2) Một số nguyên xác định số phần tử trong
srcDatacần đọc. Mặc định làsrcData.length - srcOffset. imageSize-
(chỉ WebGL 2) Một
GLsizeixác định kích thước của dữ liệu hình ảnh theo byte. offset-
(chỉ WebGL 2) Một
GLintptrchỉ định địa chỉ bắt đầu trong bộ đệm được liên kết vớigl.PIXEL_UNPACK_BUFFER.
Giá trị trả về
Không có (undefined).
Ví dụ
const ext =
gl.getExtension("WEBGL_compressed_texture_s3tc") ||
gl.getExtension("MOZ_WEBGL_compressed_texture_s3tc") ||
gl.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");
const texture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, texture);
gl.compressedTexImage2D(
gl.TEXTURE_2D,
0,
ext.COMPRESSED_RGBA_S3TC_DXT5_EXT,
512,
512,
0,
textureData,
);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
Thông số kỹ thuật
| Specification |
|---|
| WebGL Specification> # COMPRESSEDTEXIMAGE2D> |
Khả năng tương thích của trình duyệt
Xem thêm
- Sử dụng tiện ích mở rộng WebGL
WebGLRenderingContext.getExtension()WebGLRenderingContext.compressedTexSubImage2D()WebGL2RenderingContext.compressedTexSubImage3D()WebGL2RenderingContext.compressedTexImage3D()WEBGL_compressed_texture_s3tcWEBGL_compressed_texture_s3tc_srgbWEBGL_compressed_texture_etcWEBGL_compressed_texture_pvrtcWEBGL_compressed_texture_etc1WEBGL_compressed_texture_astcEXT_texture_compression_bptcEXT_texture_compression_rgtc