WebGLRenderingContext: pixelStorei() 方法

Baseline 已廣泛支援

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

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

WebGLRenderingContext.pixelStorei() 方法是 WebGL API 的一部分,用於指定畫素儲存模式。

語法

js
pixelStorei(pname, param)

引數

pname

一個 GLenum,指定要設定的引數。可能的取值見下方。

pname

一個 GLint,指定要為 pname 引數設定的值。可能的取值見下方。

返回值

無(undefined)。

畫素儲存引數

引數名 (對應 pname) 描述 型別 預設值 允許的取值 (對應 param) 指定於
gl.PACK_ALIGNMENT 畫素資料在記憶體中的打包方式。 GLint 4 1, 2, 4, 8 OpenGL ES 2.0
gl.UNPACK_ALIGNMENT 畫素資料從記憶體中的解包方式。 GLint 4 1, 2, 4, 8 OpenGL ES 2.0
gl.UNPACK_FLIP_Y_WEBGL 如果為 true,則將源資料沿其垂直軸翻轉。 GLboolean false true, false WebGL
gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL 將 Alpha 通道乘以其他顏色通道。 GLboolean false true, false WebGL
gl.UNPACK_COLORSPACE_CONVERSION_WEBGL 預設顏色空間轉換或不進行顏色空間轉換。 GLenum gl.BROWSER_DEFAULT_WEBGL gl.BROWSER_DEFAULT_WEBGL, gl.NONE WebGL

使用 WebGL 2 上下文時,還可以使用以下值:

常量 描述 型別 預設值 允許的取值 (對應 param) 指定於
gl.PACK_ROW_LENGTH 每行畫素的數量。 GLint 0 0 到 Infinity OpenGL ES 3.0
gl.PACK_SKIP_PIXELS 在將第一個畫素寫入記憶體之前跳過的畫素位置數量。 GLint 0 0 到 Infinity OpenGL ES 3.0
gl.PACK_SKIP_ROWS 在將第一個畫素寫入記憶體之前跳過的畫素行數量。 GLint 0 0 到 Infinity OpenGL ES 3.0
gl.UNPACK_ROW_LENGTH 每行畫素的數量。 GLint 0 0 到 Infinity OpenGL ES 3.0
gl.UNPACK_IMAGE_HEIGHT 從記憶體讀取畫素資料時使用的影像高度。 GLint 0 0 到 Infinity OpenGL ES 3.0
gl.UNPACK_SKIP_PIXELS 在從記憶體讀取第一個畫素影像之前跳過的畫素影像數量。 GLint 0 0 到 Infinity OpenGL ES 3.0
gl.UNPACK_SKIP_ROWS 在從記憶體讀取第一個畫素之前跳過的畫素行數量。 GLint 0 0 到 Infinity OpenGL ES 3.0
gl.UNPACK_SKIP_IMAGES 在從記憶體讀取第一個畫素影像之前跳過的畫素影像數量。 GLint 0 0 到 Infinity OpenGL ES 3.0

示例

設定畫素儲存模式會影響 WebGLRenderingContext.readPixels() 操作,以及使用 WebGLRenderingContext.texImage2D()WebGLRenderingContext.texSubImage2D() 方法進行紋理解包。

js
const tex = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, tex);
gl.pixelStorei(gl.PACK_ALIGNMENT, 4);

要檢查畫素資料打包和解包的值,您可以使用 WebGLRenderingContext.getParameter() 查詢相同的畫素儲存引數。

js
gl.getParameter(gl.PACK_ALIGNMENT);
gl.getParameter(gl.UNPACK_ALIGNMENT);

規範

規範
WebGL 規範
# 5.14.3
WebGL 規範
# PIXEL_STORAGE_PARAMETERS
WebGL 2.0 規範
# 3.7.2

瀏覽器相容性

另見