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 是选择累积缓冲区操作的符号常量。 第二个参数 value 是要在该操作中使用的浮点值。 指定了五个操作: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

带参数GL_ACCUM_BLUE_BITS的 glGet

带参数GL_ACCUM_ALPHA_BITS的 glGet

要求

要求
最低受支持的客户端
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