累积缓存是为合成多幅图像而设计的,它不是简单的用引入象素片元来代替象素值,而是将片元进行缩放,然后加到已有的象素值上。为了经过一系列的混合操作后能够保持精度,累积缓存每个颜色分量的位数要比一般的可视化系统要多。
我们可以象其他缓存一样清空累积缓存,可以用glClearAccum()来设置红、绿和蓝色分量的清空值,按位顺序清空累积缓存或以GL_ACCUM_BUFFER_BIT调用glClear()命令。
你不能直接渲染进累积缓存,而是应该渲染到一个选定的缓存,然后用glAccum()来将在那缓存中的当前图像累积进累积缓存。glAccum()用当前选择的读取缓存来拷贝。你可以用glReadBuffer()来设置你想读取的缓存。
glAccum()有2个参数:op和value。op值可为下面中的一个:
表1 glAccum()的op值
op值 动作
GL_ACCUM 从当前选定的缓存中读取象素(该缓存为了用glReadBuffer()进行读取而选定,用value乘上R、G、B、A值,
然后将结果加到累积缓存中。
GL_LOAD 与GL_ACCUM操作类似,但它是用结果值替换掉累积缓存中的值,而不是与之相加。
GL_RETURN 从累积缓存中取值,以value乘以该值,然后将该结果放入为写操作而激活的颜色缓存中。
GL_ADD 将value值与累积缓存中的每个象素值的R、G、B、A分量相加
GL_MULT将value值截取到[-1,1]之间,然后与累积缓存中的每象素的R、G、B、A分量相乘
因为你必须在累积之前渲染到另一个缓存,所以累积图像典型的方法是,将图像渲染到后缓存若干次,累积每幅图像到累积缓存中,当所需的图像数目已累积后,将内容拷贝回后缓存中,然后交换前后缓存。这样,只有在最后,才显示累积的图像。
下面是累积n幅图像的一个示例程序:
1. 调用glDrawBuffer(GL_BACK)来只渲染到后缓存;
2. 调用glReadBuffer(GL_BACK),这样累积缓存将从后缓存读取。
注意:前2步只有当应用程序已经改变了所选的写和读缓存时才需要。若可视化系统是双缓存,这些选择是默认的。
3. 调用glClear(bitfield)清空后缓存,然后渲染第1幅图像;
4. 调用glAccum(GL_LOAD,1.f/n);这允许你避免用分开的步骤来清空累积缓存;
5. 改变你的图像的参数,再重绘它;
6. 调用glAccum(GL_ACCUM,1.f/n)来将第2幅图像加到第1幅上;
7. 重复前面2个步骤≥n-2次……
8. 调用glAccum(GL_RETURN,1.f)来将完成的图像拷贝到后缓存中;
9. 调用glutSwapBuffers()(若使用GLUT)或SwapBuffers()(若使用Win32)来交换前后缓存。
累积缓存提供了一种在保持好的颜色分辨率下实现在场景中“多重曝光(multiple exposures)”的方法。使用累积缓存可以产生许多图像效果来提高图像的真实性,其中包括:反走样、运动模糊、软阴影、深度域(景深)和卷积。要产生这些效果,必须将图像渲染多次,对场景位置(或所选的物体)进行微小的、渐增的改变,然后累积结果。
本文来自CSDN博客,转载请标明出处:file:///E:/Study%20Usage/DeskTop/Accumulation%20Buffer(累积缓存)%20-%20Skyman的部落格%20-%20CSDN博客.mht
分享到:
相关推荐
The A-buffer (anti-aliased, area-averaged, accumulation buffer) is a general hidden surface mechanism suited to medium scale virtual memory computers. It resolves visibility among an arbitrary ...
ANSI ESD ADV11.2 -1995 Triboelectric Charge Accumulation Testing .pdf
Conherent_accumulation.m
benchdb-accumulation-register:ouchdb的累积寄存器
此 Williams_Accumulation_Distribution 指标在输入参数中有时间帧选项。
Microsoft Chart Controls for .NET Framework支持各种丰富的图表选项,包括pie(饼图), area(区域), range(范围), point(点), circular(圆形), accumulation(累积), data distribution(数据分布), ajax ...
My accumulation within Google docs,for reason of crash frequently ,i upload it here!
poj 3585 Accumulation Degree.md
可以免费用在ASP.NET 3.5中,促成基于浏览器的丰富图表场景支持各种丰富的图表选项,包括pie(饼图), area(区域), range(范围), point(点), circular(圆形), accumulation(累积), data distribution(数据...
Accumulation, 累积 Accuracy, 准确度 Actual frequency, 实际频数 Adaptive estimator, 自适应估计量 Addition, 相加 Addition theorem, 加法定理 Additive Noise, 加性噪声 Additivity, 可加性 Adjusted rate, ...
accumulation 累积 accumulative 累积的 accuracy 准确度 act on 施于 action 作用; 作用力 acute angle 锐角 acute-angled triangle 锐角三角形 add 加 addition 加法 addition formula 加法公式 addition law 加法...
好东西!spss中英文对照表------------------------------------------------------------- Absolute deviation, 绝对离差 Absolute number, 绝对数 Absolute residuals, 绝对残差 ...Accumulation, 累积
指标 MTF_Accumulation/distribution。 Accumulation/distribution指标的修改版本。
Microsoft Chart Controls for .NET Framework支持各种丰富的图表选项,包括pie(饼图), area(区域), range(范围), point(点), circular(圆形), accumulation(累积), data distribution(数据分布), ajax ...
wrapping a keras optimizer to implement gradient accumulation
可以免费用在ASP.NET 3.5中,促成基于浏览器的丰富图表场景支持各种丰富的图表选项,包括pie(饼图), area(区域), range(范围), point(点), circular(圆形), accumulation(累积), data distribution(数据...
关于循环谱的FAM算法,用于快速计算循环谱
申万宏源_20160901_技术指标测试大全之八—Accumulation Swing Index.pdf