游戏中运动模糊用累积缓冲的简单实现

来源:互联网 发布:矿山尘肺数据 编辑:程序博客网 时间:2024/06/05 00:15

由于代码示例别的附加代码太多,我没有把附加代码和我以前写的东西都分离出来,所以只有主要思想写出来希望给厉害帮助。我以后给代码示例的。我也在网上查了好长时间这个东西,但是网上讲的一点也不细,所以被迫研究了好长时间,才研究出来,虽然只有三句代码,但理解意思费了我好大劲。因为OPENGL红宝书上也没什么示例。

我也在做这个运动模糊,我认为有两种实现方法。

1.拷贝上一帧的数据,和下一帧进行某种混合。使产生那效果。(我暂时也没实现了,不知道哪里不正确,以后如果实现了会贴出代码)

2.利用累积缓冲区实现,这个实现比较简单,但我感觉如果自己去研究,还是会走点弯路,因为不明白那函数的所有意思。

eg  auxWireSphere(5.0); 画个球  要想看到效果,场景中必须画个东西,这里就画个这个球吧
 
 glAccum(GL_MULT,0.8);          // 这个的意思是把累积缓冲的数据*0.8再写入的累积缓冲,这个值越近1,模糊就越大
 glAccum(GL_ACCUM,0.2);       // 这个意思是把帧缓冲的数据*0.2加入到累积缓冲区,这个值越接近1模糊越小

 glAccum(GL_RETURN,1.0);(上面这两个有个注意的地方就是两个值加起来必须为1,要不然画面会失真)这个的意思是把累积缓冲区的数据返回到帧缓冲区

 

 

如果想细细体会里面的意思,自己回去想吧,这上面这四句话就可以实现模糊了。

原创粉丝点击