WebGLRenderingContext: pixelStorei() 方法
注意:此功能在 Web Workers 中可用。
WebGLRenderingContext.pixelStorei() 方法是 WebGL API 的一部分,用于指定像素存储模式。
语法
js
pixelStorei(pname, param)
参数
返回值
无(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 |
浏览器兼容性
加载中…