不调用glClear()时OpenGL ES Graphics问题

时间:2011-08-04 18:59:01

标签: cocoa-touch ipad graphics opengl-es

我正在开发一款iPad应用程序,它拥有几千个粒子,用户可以通过触摸进行操作。为了产生有趣的设计,我想做到这一点,当在一个位置绘制粒子时,该绘图不会在下一帧被清除。这会产生一种“痕迹”效应。目前我正在这样做的时候,当“trail”被打开时,每个帧都不会调用glClear(),因此从每个帧的绘制被添加到前一帧的绘图中。这在iPad模拟器中运行良好,但出于某种原因,当我在实际设备上运行时,当我在粒子轨道上转动轨迹闪烁时,就像缓冲区有一些奇怪的事情。

是否有更好的方法来生成线索/为什么这个图形问题只发生在模拟器中?

谢谢!

1 个答案:

答案 0 :(得分:0)

在缓冲区之间调用glClear(),以便您可以开始在干净的平板上绘制下一个 - 您确实需要清除帧之间的缓冲区。继续填充缓冲区是不好的做法,因为你可以开始制作工件(正如你所注意到的)。

要产生尾随效果,您可能需要使用其他粒子。跟踪粒子的位置或速度,然后在路径上绘制其他粒子。