WebGLRenderingContext: compressedTexSubImage2D() 方法

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

注意:此功能在 Web Workers 中可用。

compressedTexSubImage2D() 方法是 WebGL APIWebGLRenderingContext 介面的一部分,用於在壓縮格式下指定紋理影像的二維子矩形。

壓縮影像格式僅可透過 WebGL2RenderingContext 或某些 WebGL 擴充套件 獲得。

語法

js
// WebGL 1:
compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, srcData)

// Additionally available in WebGL 2:
compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, srcData, srcOffset)
compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, srcData, srcOffset, srcLengthOverride)
compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, 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 縮減級別。

xoffset

一個 GLint,指定壓縮紋理影像中的水平偏移量。

yoffset

一個 GLint,指定壓縮紋理影像中的垂直偏移量。

width

一個 GLsizei,指定壓縮紋理的寬度。

height

一個 GLsizei,指定壓縮紋理的高度。

格式(format)

一個 GLenum,指定壓縮影像格式。可能值的列表,請參閱 WebGLRenderingContext.compressedTexImage2D()

紋理源可以透過兩種方式提供:使用 srcDatasrcOffsetsrcLengthOverrideArrayBuffer(可能共享)提供;或者,在 WebGL 2 中,從 gl.PIXEL_UNPACK_BUFFER 使用 imageSizeoffset 提供。

srcData

一個包含壓縮紋理資料的 TypedArrayDataView

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)。

示例

js
const ext =
  gl.getExtension("WEBGL_compressed_texture_s3tc") ||
  gl.getExtension("MOZ_WEBGL_compressed_texture_s3tc") ||
  gl.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");
gl.compressedTexSubImage2D(
  gl.TEXTURE_2D,
  0,
  256,
  256,
  512,
  512,
  ext.COMPRESSED_RGBA_S3TC_DXT5_EXT,
  textureData,
);

規範

規範
WebGL 規範
# COMPRESSEDTEXSUBIMAGE2D

瀏覽器相容性

另見