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,则通过跳过公式来获取下一行的第一个像素的位置GL_PACK_ROW_LENGTH。[newline] 分量或索引,其中 n 是像素中的分量或索引数,l 是行中 (gl-pack-row-length 的像素数(如果大于零),像素例程的 width 参数) ,a 是 gl-pack-alignment 的值,s 是单个分量 (的大小(以字节为单位),如果< ,则为它就像 = 是) 。 对于 1 位值,可通过跳过公式来获取下一行的位置 ,该公式显示GL_PACK_ROW_LENGTH中下一行的位置。
组件或索引。 此说明中的 “组件 ”一词是指非索引值红色、绿色、蓝色、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 (行从双字边界) 开始。

其他六个存储参数会影响从客户端内存读取像素数据的方式。 这些值对于 glDrawPixelsglTexImage1DglTexImage2DglBitmapglPolygonStipple 非常重要。 这些限制如下:

存储参数 说明
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,则通过跳过公式来获取下一行的第一个像素的位置GL_UNPACK_ROW_LENGTH。[newline] 分量或索引,其中 n 是像素中的分量或索引数,l 是行中 (gl-pack-row-length 的像素数(如果大于零),像素例程的 width 参数) ,a 是 gl-pack-alignment 的值,s 是单个分量 (的大小(以字节为单位),如果< ,则为它就像 = 是) 。 对于 1 位值,可以通过跳过公式来获取下一行的位置 ,该公式显示GL_UNPACK_ROW_LENGTH中下一行的位置。
组件或索引。 此说明中的 “组件 ”一词是指非索引值红色、绿色、蓝色、alpha 和深度。 例如,存储格式GL_RGB每个像素有三个分量:先是红色,然后是绿色,最后是蓝色。
GL_UNPACK_SKIP_PIXELS 和
GL_UNPACK_SKIP_ROWS
为方便程序员提供这些值;它们不提供任何无法复制的功能,只需递增传递给 glDrawPixelsglTexImage1DglTexImage2DglBitmapglPolygonStipple 的指针即可。 将 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 函数设置像素存储模式,这些模式会影响后续 glDrawPixelsglReadPixel 的操作,以及多边形 stipple 模式的解包 (请参阅 glPolygonStipple) , 位图 (见 glBitmap) ,纹理图案 (见 glTexImage1DglTexImage2DglTexSubImage1DglTexSubImage2D) 。

下表提供了可以使用 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。 参数在分配给实值参数之前转换为浮点。

glDrawPixelsglReadPixelsglTexImage1DglTexImage2DglBitmapglPolygonStipple 置于显示列表中时,像素存储模式将有效控制内存数据的解释。 执行显示列表时生效的像素存储模式并不重要。

以下函数检索与 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 [仅限桌面应用]
标头
Gl.h

Opengl32.lib
DLL
Opengl32.dll

请参阅

glBegin

glBitmap

glDrawPixels

glEnd

glPixelMap

glPixelTransfer

glPixelZoom

glPolygonStipple

glReadPixels

glTexImage1D

glTexImage2D