glPixelStoref 函数
设置像素存储模式。
语法
void WINAPI glPixelStoref(
GLenum pname,
GLfloat param
);
parameters
-
pname
-
要设置的参数的符号名称。 其中六个存储参数会影响像素数据返回到客户端内存的方式,因此仅对 glReadPixels 命令有效。 这些限制如下:
存储参数 说明 GL_PACK_SWAP_BYTES 如果为 true,则多字节颜色分量、深度分量、颜色索引或模具索引的字节顺序将相反。 也就是说,如果四字节分量由字节 b0、 b1、 b2、 b3 组成,则如果GL_PACK_SWAP_BYTES为 true,则它以 b3、 b2、 b1、 b0 的形式存储在内存中。 GL_PACK_SWAP_BYTES不会影响像素内组件的内存顺序,而只影响组件或索引中的字节顺序。 例如,无论GL_PACK_SWAP_BYTES的值如何,GL_RGB格式像素的三个分量始终以红色第一、绿色第二和蓝色第三个形式存储。 GL_PACK_LSB_FIRST 如果为 true,则位在字节内从最小有效到最有效的顺序排列;否则,每个字节中的第一个位是最重要的位。 此参数仅对位图数据很重要。 GL_PACK_ROW_LENGTH 如果大于零,GL_PACK_ROW_LENGTH定义行中的像素数。 如果行的第一个像素放置在内存中的位置 p,则通过跳过公式来获取下一行的第[newline] 分量或索引,其中 n 是像素中的分量或索引数,l 是行中 (gl-pack-row-length 的像素数(如果大于零),像素例程的 width 参数) ,a 是 gl-pack-alignment 的值,s 是单个分量 (的大小(以字节为单位),如果为< ,则为, 则它就像 = 是) 。 对于 1 位值,可通过跳过公式来获取下一行的位置
组件或索引。 此说明中的 “组件 ”一词是指非索引值红色、绿色、蓝色、alpha 和深度。 例如,存储格式GL_RGB每个像素有三个分量:先是红色,然后是绿色,最后是蓝色。GL_PACK_SKIP_PIXELS 和
GL_PACK_SKIP_ROWS为方便程序员提供这些值;它们不提供任何无法复制的功能,只需递增传递给 glReadPixels 的指针即可。 将 GL_PACK_SKIP_PIXELS 设置为 i 等效于按 i n 个分量或索引递增指针,其中 n 是每个像素中的分量或索引数。 将 GL_PACK_SKIP_ROWS 设置为 j 等效于按 j k 分量或索引递增指针,其中 k 是每行的组件数或索引数,如上面GL_PACK_ROW_LENGTH部分所示。 GL_PACK_ALIGNMENT 指定内存中每个像素行的开头的对齐要求。 允许的值为 1 (字节对齐) ,2 (行与偶数字节) 对齐,4 (字对齐) ,8 (行从双字边界) 开始。 其他六个存储参数会影响从客户端内存读取像素数据的方式。 这些值对于 glDrawPixels、 glTexImage1D、 glTexImage2D、 glBitmap 和 glPolygonStipple 非常重要。 这些限制如下:
存储参数 说明 GL_UNPACK_SWAP_BYTES 如果为 true,则多字节颜色分量、深度分量、颜色索引或模具索引的字节顺序将相反。 也就是说,如果四字节分量由字节 b0、 b1、 b2、 b3 组成,则如果GL_UNPACK_SWAP_BYTES为 true,则它以 b3、 b2、 b1、 b0 的形式存储在内存中。 GL_UNPACK_SWAP_BYTES不会影响像素内组件的内存顺序,仅影响组件或索引中的字节顺序。 例如,无论GL_UNPACK_SWAP_BYTES的值如何,GL_RGB格式像素的三个分量始终以红色第一、绿色第二和蓝色第三个形式存储。 GL_UNPACK_LSB_FIRST 如果为 true,则位在字节内从最小有效到最有效的顺序排列;否则,每个字节中的第一个位是最重要的位。 这仅对位图数据很重要。 GL_UNPACK_ROW_LENGTH 如果大于零,GL_UNPACK_ROW_LENGTH定义行中的像素数。 如果行的第一个像素放置在内存中的位置 p,则通过跳过公式来获取下一行的第一个[newline] 分量或索引,其中 n 是像素中的分量或索引数,l 是行中 (gl-pack-row-length 的像素数(如果大于零),像素例程的 width 参数) ,a 是 gl-pack-alignment 的值,s 是单个分量 (的大小(以字节为单位),如果为< ,则为, 则它就像 = 是) 。 对于 1 位值,可以通过跳过公式来获取下一行的位置
组件或索引。 此说明中的 “组件 ”一词是指非索引值红色、绿色、蓝色、alpha 和深度。 例如,存储格式GL_RGB每个像素有三个分量:先是红色,然后是绿色,最后是蓝色。GL_UNPACK_SKIP_PIXELS 和
GL_UNPACK_SKIP_ROWS为方便程序员提供这些值;它们不提供任何无法复制的功能,只需递增传递给 glDrawPixels、 glTexImage1D、 glTexImage2D、 glBitmap 或 glPolygonStipple 的指针即可。 将 GL_UNPACK_SKIP_PIXELS 设置为 i 等效于按 i n 个分量或索引递增指针,其中 n 是每个像素中的分量或索引数。 将 GL_UNPACK_SKIP_ROWS 设置为 j 等效于按 j k 分量或索引递增指针,其中 k 是每行的组件数或索引数,如上面GL_UNPACK_ROW_LENGTH部分所示。 GL_UNPACK_ALIGNMENT 指定内存中每个像素行的开头的对齐要求。 允许的值为 1 (字节对齐) ,2 (行与偶数字节) 对齐,4 (字对齐) ,8 (行从双字边界) 开始。 -
param
-
pname 设置为的值。
返回值
此函数不返回值。
注解
glPixelStore 函数设置像素存储模式,这些模式会影响后续 glDrawPixels 和 glReadPixel 的操作,以及多边形 stipple 模式的解包 (请参阅 glPolygonStipple) , 位图 (见 glBitmap) ,纹理图案 (见 glTexImage1D、glTexImage2D、glTexSubImage1D 和 glTexSubImage2D) 。
下表提供了可以使用 glPixelStore 设置的每个存储参数的类型、初始值和有效值范围。
Pname | 类型 | 初始值 | 有效的范围 |
---|---|---|---|
GL_PACK_SWAP_BYTES | Boolean | false | true 或 false |
GL_PACK_SWAP_BYTES | Boolean | false | true 或 false |
GL_PACK_ROW_LENGTH | integer | 0 | [0,?) |
GL_PACK_SKIP_ROWS | integer | 0 | [0,?) |
GL_PACK_SKIP_PIXELS | integer | 0 | [0,?) |
GL_PACK_ALIGNMENT | 整型 | 4 | 1、2、4 或 8 |
GL_UNPACK_SWAP_BYTES | Boolean | false | true 或 false |
GL_UNPACK_LSB_FIRST | Boolean | false | true 或 false |
GL_UNPACK_ROW_LENGTH | integer | 0 | [0,?) |
GL_UNPACK_SKIP_ROWS | integer | 0 | [0,?) |
GL_UNPACK_SKIP_PIXELS | integer | 0 | [0,?) |
GL_UNPACK_ALIGNMENT | 整型 | 4 | 1、2、4 或 8 |
glPixelStoref 函数可用于设置任何像素存储参数。 如果参数类型为布尔值,并且 param 为 0.0,则参数为 false;否则设置为 true。 如果 pname 是整数类型参数,则 参数 将舍入为最接近的整数。
同样, glPixelStorei 函数也可用于设置任何像素存储参数。 如果 param 为 0,则布尔参数设置为 false,否则设置为 true。 参数在分配给实值参数之前转换为浮点。
当 glDrawPixels、 glReadPixels、 glTexImage1D、 glTexImage2D、 glBitmap 或 glPolygonStipple 置于显示列表中时,像素存储模式将有效控制内存数据的解释。 执行显示列表时生效的像素存储模式并不重要。
以下函数检索与 glPixelStore 相关的信息:
带参数GL_PACK_SWAP_BYTES的 glGet
带参数GL_PACK_LSB_FIRST的 glGet
带参数GL_PACK_ROW_LENGTH的 glGet
带参数GL_PACK_SKIP_ROWS的 glGet
带参数GL_PACK_SKIP_PIXELS的 glGet
带参数GL_PACK_ALIGNMENT的 glGet
带参数GL_UNPACK_SWAP_BYTES的 glGet
带参数GL_UNPACK_LSB_FIRST的 glGet
带参数GL_UNPACK_ROW_LENGTH的 glGet
带参数GL_UNPACK_SKIP_ROWS的 glGet
带参数GL_UNPACK_SKIP_PIXELS的 glGet
带参数GL_UNPACK_ALIGNMENT的 glGet
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 |
Windows 2000 Server [仅限桌面应用] |
标头 |
|
库 |
|
DLL |
|