【问题标题】:glClear causing problems according to Instruments? (OpenGL ES on iPhone)glClear 根据仪器造成问题? (iPhone 上的 OpenGL ES)
【发布时间】:2010-11-17 20:45:38
【问题描述】:

我最近注意到我的游戏有时会出现性能问题,即每一帧的完成时间都比应该完成的要长得多。我将它插入 Instruments 中的 CPU Sampler 并发现了一些很奇怪的东西(我想,这是我第一次使用 CPU Sampler,所以我不明白所有这些)。

glClear 显然占用了大量的 CPU 时间(目前为 36%,并且还在稳步上升)。这是一个相当耗费处理器的游戏,所以调用 glClear 不可能占用这么多时间。

glClearColor(backgroundcolor[0], backgroundcolor[1], backgroundcolor[2], 1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

每帧只调用一次。我没有活动的模板缓冲区,所以这不是问题。可能有问题的一件事是,我的游戏允许您在任何方向上任意移动,这意味着您的 x 和 y 位置可能会远离原点。 glClear 会尝试清除您所覆盖的整个景观还是仅清除屏幕的尺寸?如果这不是问题,那么有谁知道为什么它在我的处理器上如此昂贵?

【问题讨论】:

    标签: iphone performance opengl-es cpu instruments


    【解决方案1】:

    glClear 正在等待您的其余命令完成(这在 iOS 上的 afaik 意味着 vsync?)。

    如果你

    glFlush(); glFinish();

    在渲染结束时,您会看到在 glClear 中花费的大量时间转移到 glFinish。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-16
      • 1970-01-01
      • 2010-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-30
      相关资源
      最近更新 更多