WebGLRenderingContext: compressedTexImage2D() 方法
Baseline 廣泛可用 *
注意:此功能在 Web Workers 中可用。
WebGLRenderingContext 介面的 compressedTexImage2D() 方法是 WebGL API 的一部分,用於指定一個以壓縮格式表示的二維紋理影像。
壓縮影像格式只能透過 WebGL2RenderingContext 或某些 WebGL 擴充套件 來獲得。
語法
// 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)
引數
目標-
一個
GLenum,指定活動壓縮紋理的繫結點(目標)。可能的值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-
一個
GLint,指定細節級別。級別 0 是基本影像級別,級別 n 是第 n 個 mipmap 縮減級別。 internalformat-
一個
GLenum,指定壓縮影像格式。壓縮影像格式只能透過WebGL2RenderingContext或某些 WebGL 擴充套件 來獲得。可能的值-
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
-
使用
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
-
使用
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
-
使用
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
-
使用
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
-
使用
WEBGL_compressed_texture_etc1擴充套件時ext.COMPRESSED_RGB_ETC1_WEBGL
-
使用
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
-
使用
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
-
使用
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-
一個
GLsizei,指定紋理的寬度(以 texel 為單位)。 height-
一個
GLsizei,指定紋理的高度(以 texel 為單位)。 depth-
一個
GLsizei,指定紋理的深度/TEXTURE_2D_ARRAY中紋理的數量。 border-
一個
GLint,指定邊框的寬度。必須為 0。
紋理源可以透過兩種方式提供:使用 srcData、srcOffset 和 srcLengthOverride 從 ArrayBuffer(可能共享)提供;或者,在 WebGL 2 中,從 gl.PIXEL_UNPACK_BUFFER 使用 imageSize 和 offset 提供。
srcData-
一個包含壓縮紋理資料的
TypedArray或DataView。 srcOffset可選-
(僅限 WebGL 2)一個整數,指定
srcData開始讀取的索引。預設為0。 srcLengthOverride可選-
(僅限 WebGL 2) 一個指定要讀取的
srcData中元素數量的整數。預設為srcData.length - srcOffset。 imageSize-
(僅限 WebGL 2) 一個
GLsizei,指定影像資料的大小(以位元組為單位)。 offset-
(僅限 WebGL 2)一個
GLintptr,指定繫結到gl.PIXEL_UNPACK_BUFFER的緩衝區中的起始地址。
返回值
無(undefined)。
示例
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);
規範
| 規範 |
|---|
| WebGL 規範 # COMPRESSEDTEXIMAGE2D |
瀏覽器相容性
載入中…
另見
- 使用 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