图像效果后发光 - 如何在渲染后保存发光渲染缓冲区

时间:2012-10-04 13:25:47

标签: opengl opengl-es-2.0

我实现了像中的发光 http://http.developer.nvidia.com/GPUGems/gpugems_ch21.html
现在我想在发光部件的图像效果之后实现,所以他们制作了路径,如 21.5.4 After-Image Effect 部分所述。

我的方法是将水平和垂直晕染后的发光纹理传递到另一个帧缓冲区(轨道支架),并根据当前的轨迹渲染具有修改后的alpha颜色的发光纹理四边形以用于淡出效果计数(我们已经渲染了多少次跟踪持有者),然后将跟踪持有者纹理与当前帧最终图像混合。所以我们在之前的精灵位置得到了一系列发光部件 如果跟踪计数 == 最大跟踪大小,则清除跟踪持有者。

问题是如何保存清单中的缓冲区缓冲区,即使我评论所有跟踪计数检查和

//glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//glClearColor(...);  

它不会保存有关上一次渲染的信息。

P.S。即使没有任何缓冲和晕染,如果只是移动并绘制到默认缓冲区纹理四边形并且不清除它将在黑屏上移动的任何东西,我认为它必须跟踪自己的图像,因为我们没有清除任何东西。 为什么以及如何解决它?问题似乎是OpenGL ES 2.0和桌面OpenGL的通用。

1 个答案:

答案 0 :(得分:1)

我建议您渲染一组纹理,这些纹理在屏幕外的帧缓冲对象中绑定为颜色附件。然后通过将后处理步骤渲染中的纹理图层组合到屏幕上的帧缓冲区来创建发光效果。

通过使用帧缓冲对象,您可以在所搜索的清算操作上获得隔离。