1

我在
http://http.developer.nvidia.com/GPUGems/gpugems_ch21.html
中实现了发光 现在我想为发光部分实现后图像效果,所以它们会留下痕迹,如21.5.4 后图像中所述文章的效果部分。

我的方法是在水平和垂直绽放后将发光纹理传递给另一个帧缓冲区(轨迹支架),并根据当前轨迹计数(我们已经渲染到轨迹支架的次数),使用修改过的 alpha 颜色渲染发光纹理四边形以实现淡出效果,然后将轨迹支架纹理与当前帧最终图像混合。所以我们在之前的精灵位置得到了一系列发光的部分。
如果trail count == max trail size,则清除 trail holder。

问题是如何从清洁中保存跟踪持有人缓冲区,即使我评论了所有跟踪计数检查和

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

它不会保存有关先前渲染的信息。

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

4

1 回答 1

2

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

通过使用帧缓冲区对象,您可以在您寻求的清除操作上获得隔离。

于 2012-10-04T14:07:23.900 回答