官方文档: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函数
void glPixelStorei(
GLenum pname, // 参数符号名称,如:GL_PACK_ALIGNMENT、GL_UNPACK_ALIGNMENT
GLint param // 参数值
);
参数_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.