【问题标题】:OpenGL ES Graphics issue when not calling glClear()不调用 glClear() 时的 OpenGL ES 图形问题
【发布时间】:2011-08-05 03:06:34
【问题描述】:

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

有没有更好的方法来产生轨迹/为什么这个图形问题只出现在模拟器中?

谢谢!

【问题讨论】:

    标签: cocoa-touch ipad graphics opengl-es


    【解决方案1】:

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

    要产生拖尾效果,您可能需要使用额外的粒子。跟踪粒子的位置或速度,然后在轨迹上绘制额外的粒子。

    【讨论】:

    • 谢谢。至于额外的粒子,目前该程序在图形方面几乎处于 iPad 的极限。有没有其他方法可以将前一个缓冲区的外观分配给当前缓冲区,然后在其上绘制?
    • 您可以尝试建立一个缓冲区,然后使用 glSwapBuffer 将建立的缓冲区移到前面,但我不知道它是否会给您带来性能提升。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多