官方文档:https://docs.gl/es2/glPixelStorei

一、描述

set pixel storage modes.
设置像素存储模式。

glPixelStorei sets pixel storage modes that affect the operation of subsequent glReadPixels as well as the unpacking of texture patterns (see glTexImage2D and glTexSubImage2D).
glPixelStorei设置像素存储模式,这些模式会影响后续glReadPixels的操作以及纹理模式的解包(unpacking)。

Boolean parameters are set to false if param is 0 and true otherwise.

unpacking和packing

unpacking:解包,指的是客户端(内存)的像素矩形数据传输到GL服务端(GPU)的过程。输入是客户端内存中以某种格式编码的像素数据,输出是[0, 1]的浮点型RGBA值。
packing:与unpacking过程相反。

二、C函数

  1. void glPixelStorei(
  2. GLenum pname, // 参数符号名称,如:GL_PACK_ALIGNMENT、GL_UNPACK_ALIGNMENT
  3. GLint param // 参数值
  4. );

参数_pname

Specifies the symbolic name of the parameter to be set. One value affects the packing of pixel data into memory: GL_PACK_ALIGNMENT. The other affects the unpacking of pixel data from memory: GL_UNPACK_ALIGNMENT.
指定要设置的参数的符号名称。 一个值会影响像素数据到内存的打包:GL_PACK_ALIGNMENT。 另一个影响从内存中解压缩像素数据:GL_UNPACK_ALIGNMENT
下表给出了可以使用glPixelStorei设置的每个存储参数的类型,初始值和有效值范围。

pname 类型 初始值 合理值范围
GL_PACK_ALIGNMENT integer 4 1,2,4,8
GL_UNPACK_ALIGNMENT integer 4 1,2,4,8

GL_PACK_ALIGNMENT

影响像素数据返回客户端内存的方式。

Specifies the alignment requirements for the start of each pixel row in memory. The allowable values are

  • 1 (byte-alignment),
  • 2 (rows aligned to even-numbered bytes),
  • 4 (word-alignment),
  • 8 (rows start on double-word boundaries).

指定内存中每个像素行开头的对齐要求。允许值为1(字节对齐),2(行与偶数字节对齐),4(字对齐)和8(行从双字地址开始)。

GL_UNPACK_ALIGNMENT

影响从客户端内存中读取像素数据的方式。

Specifies the alignment requirements for the start of each pixel row in memory. The allowable values are

  • 1 (byte-alignment),
  • 2 (rows aligned to even-numbered bytes),
  • 4 (word-alignment),
  • 8 (rows start on double-word boundaries).

指定内存中每个像素行开头的对齐要求。 允许值为1(字节对齐),2(行与偶数字节对齐),4(字对齐)和8(行从双字地址开始)。

参数_param

Specifies the value that pname is set to.
指定pname设置为的值。

三、错误

GL_INVALID_ENUM

generated if pname is not an accepted value.

GL_INVALID_VALUE

generated if alignment is specified as other than 1, 2, 4, or 8.