glAccum 函数

glAccum 函数对累积缓冲区进行操作。

语法

void WINAPI glAccum(
   GLenum  op,
   GLfloat value
);

参数

op

累积缓冲区操作。 接受的符号常量如下所示。

含义
GL_ACCUM
从当前为读取 (选择的缓冲区获取 R、G、B 和 A 值,请参阅 glReadBuffer) 。 每个分量值除以 2n 1,其中 n 是分配给当前所选缓冲区中每个颜色分量的位数。 结果是 [0,1] 范围内的浮点值,它乘以 并添加到累积缓冲区中的相应像素组件,从而更新累积缓冲区。
GL_LOAD
与GL_ACCUM类似,除非在计算新值时不使用累积缓冲区中的当前值。 也就是说,当前所选缓冲区中的 R、G、B 和 A 值除以 2n 1,乘以 ,然后存储在相应的累积缓冲区单元格中,覆盖当前值。
GL_ADD
添加到累积缓冲区中的每个 R、G、B 和 A。
GL_MULT
将累积缓冲区中的每个 R、G、B 和 A 乘以 ,并将缩放组件返回到其相应的累积缓冲区位置。
GL_RETURN
将累积缓冲区值传输到当前为写入选择的颜色缓冲区或缓冲区。 每个 R、G、B 和 A 组件乘以 ,然后乘以 2n 1,固定到范围 [0, 2n 1 ],并存储在相应的显示缓冲区单元格中。 应用于此传输的唯一片段操作是像素所有权、剪刀、抖动和颜色写掩码。

value

累积缓冲区操作中使用的浮点值。 op 参数确定如何使用值

返回值

此函数不返回值。

错误代码

glGetError 函数可以检索以下错误代码。

名称 含义
GL_INVALID_ENUM
op 不是接受的值。
GL_INVALID_OPERATION
没有累积缓冲区,或者在对 glBegin 的调用和对 glEnd 的相应调用之间调用函数 glAccum

备注

累积缓冲区是一个扩展范围的颜色缓冲区。 图像不会呈现到其中。 相反,呈现到其中一个颜色缓冲区的图像在呈现后会添加到累积缓冲区的内容中。 可以通过累积使用不同的转换矩阵生成的图像来创建效果,例如点、线条和多边形) 、运动模糊和字段深度等反锯齿 (。

累积缓冲区中的每个像素由红色、绿色、蓝色和 alpha 值组成。 累积缓冲区中每个组件的位数取决于实现。 可以通过分别调用 glGetIntegerv 、参数GL_ACCUM_RED_BITS、GL_ACCUM_GREEN_BITS、GL_ACCUM_BLUE_BITS和GL_ACCUM_ALPHA_BITS来检查此号码。 但是,无论每个组件有多少位,每个组件存储的值范围都是 [ 1,?1]。 累积缓冲区像素映射到具有帧缓冲区像素的一对一。

glAccum 函数对累积缓冲区进行操作。 第一个参数 op 是一个符号常量,用于选择累积缓冲区操作。 第二个参数 是要在该操作中使用的浮点值。 指定了五个操作:GL_ACCUM、GL_LOAD、GL_ADD、GL_MULT和GL_RETURN。

所有累积缓冲区操作仅限于当前剪刀框的区域,并且与每个像素的红色、绿色、蓝色和 alpha 组件相同。 如果 glAccum 操作导致超出范围 [ 1,1] 的值,则累积缓冲区像素组件的内容是未定义的。

若要清除累积缓冲区,请使用 glClearAccum 函数指定 R、G、B 和 A 值以将其设置为,并发出启用了累积缓冲区的 glClear 函数。

只有当前剪刀框中的这些像素通过任何 glAccum 操作进行更新。

以下函数检索与 glAccum 函数相关的信息:

带参数GL_ACCUM_RED_BITS的 glGet

带参数GL_ACCUM_GREEN_BITS的 glGet

带参数的 glGet GL_ACCUM_BLUE_BITS

带参数的 glGet GL_ACCUM_ALPHA_BITS

要求

要求
最低受支持的客户端
Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器
Windows 2000 Server [仅限桌面应用]
标头
Gl.h

Opengl32.lib
DLL
Opengl32.dll

另请参阅

glBegin

glBlendFunc

glClear

glClearAccum

glCopyPixels

glEnd

glGet

glLogicOp

glPixelStore

glPixelTransfer

glReadBuffer

glReadPixels

glScissor

glStencilOp