OpenGL累积缓存的操作函数详细说明
来源:互联网 发布:云计算招聘岗位 编辑:程序博客网 时间:2024/06/06 09:21
OpenGL中存在各种缓冲区,用以实现不同功能,(参考缓冲区简介) 。累积缓存(Accumulate Buffer)就是一种,它主要为了辅助累积计算。例如:运动模糊和全局反走样。对于累积缓存的操作,需要使用glAccum()等函数进行。下面是涉及到的主要函数:
(一)void glClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
指定累积缓冲区清空时设置的默认值。包括红、绿、蓝、透明度。默认为0。
(二)void glClear( GLbitfield mask );
设置mask包括GL_ACCUM_BUFFER_BIT,以实际清除累积缓存中的内容。
(三)void glAccum( GLenum op, GLfloat value);
对于累积缓存中的内容进行操作。op定义操作,value为操作相关值。具体如下:
1:GL_LOAD
将当前缓冲内容装入累积缓存中(直接的复制)。value为装载时的比例系数(0~1.0)。
R' = R * value
G' = G * value
B' = B * value,A' = A * value
2:GL_ACCUM
将当前缓冲中的内容和累积缓存中内容进行累积混合,结果放入累积缓存中。
R' = R*(1.0-value) + R*value
G' = G*(1.0-value) + G*value
B' = B*(1.0-value) + B*value
A' = A*(1.0-value) + A*value
3:GL_ADD
将累积缓存中的内容加特定值。
R' = R' + value
G' = G' + value
B' = B' + value
A' = A' + value
4:GL_MULT
将累积缓存中的内容乘以特定值。
R' = R' * value
G' = G' * value
B' = B' * value
A' = A' * value
5:GL_RETURN
将累积缓存中的内容拷贝到颜色缓存或当前选择缓冲区。
R = R' * value
G = G' * value
B = B' * value
A = A' * value
实际应用时,可以遵循下列参考步骤:
(一)调用glAccum(GL_LOAD, value)将选定缓冲区内容装入累积缓存中。
(二)调用glAccum(GL_ACCUM, value)、glAccum(GL_ADD, value)或glAccum(GL_MULT, value)进行累积计算。
(三)glAccum(GL_RETURN, value)将结果返回给指定的缓冲区。
注:当前选定缓冲区可以由glReadBuffer()指定,默认为后颜色缓冲区。
下面为一个实际的运动模糊实例:
void DrawMotionBlur()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
gluLookAt(0.0,0.0,10.0,0.0,0.0,0.0,0.0,1.0,0.0);
GLfloat angle = 0.0f;
for(int i = 0; i < COUNT; i++)
{
DrawObject(angle);
angle += 10.0f;
if(0==i)
glAccum(GL_LOAD,1.0f/COUNT);
else
glAccum(GL_ACCUM,1.0f/COUNT);
}
glAccum(GL_RETURN, 1.0f);
}
- OpenGL累积缓存的操作函数详细说明
- OpenGL累积缓存的操作函数详细说明
- opengl累积缓存
- OpenGL: Accumulation Buffer(累积缓存)
- 【OpenGL】常见的函数说明
- cmd常用的操作(累积)
- OpenGL的函数中文说明一:glBlendFunc
- OpenGL的引入及基本函数说明
- 数据库缓存依赖的操作符说明
- OpenGL变换函数说明
- OPENGL函数说明
- OpenGl函数说明
- openGL函数说明
- 【OpenGL】GLUT函数说明
- OpenGL: 累积缓冲区glAccum
- txt文件的操作详细说明
- AWR报告的详细操作及说明
- UIView的常用操作 详细说明
- 未来10年,马云式梦想能否再现?
- ASP.NET页面与IIS底层交互和工作原理详解
- 汇编笔记
- js 实现无缝滚动 兼容IE FF
- 学习rownum
- OpenGL累积缓存的操作函数详细说明
- 网络蜘蛛程序的设计与实现(五)HillTop算法
- nlog 中小型日志组件 解决了应用程序的日志问题
- 北京在绿色城市道路上的一个里程碑
- 相互理解
- Oracle: 通过命令行登陆连接并操作数据库
- Linux 2.6.22.6移植到S3C2440之通过nfs启动qt并添加USB鼠标支持
- CLR via C#: GetHashCode与Hashtable,Dictionary
- Spring - Java/J2EE Application Framework——Spring Framework 开发参考手册