【问题标题】:Cocoa OpenGL unlocked framerateCocoa OpenGL 解锁帧率
【发布时间】:2012-06-02 22:58:24
【问题描述】:

我希望能够在没有锁定帧速率(目前为 60 fps)的情况下运行我的游戏。我发现运行动画的唯一方法是使用 NSTimer。有没有办法在 Cocoa 中拥有不受限制的帧速率。如果是这样,链接或代码 sn-p 将有很大帮助。

【问题讨论】:

  • 绘图速度快于显示器刷新有什么意义?你只是在浪费 CPU 周期。如果您使用CVDisplayLink,则保证您的绘图速度与显示速度一样快。
  • @RobKeniger 我这样做主要是为了看看可以多快完成一帧,以便我可以确定是否可以为碰撞检测和 phong 照明等事情集成更复杂和准确的计算。但我不能真正做到这一点,因为我有一个锁定的帧速率,并且无法判断 CPU 每帧可以处理多少。
  • @Chase:当然可以。只需使用高精度计时器来测量等待下一帧开始所花费的时间。
  • @BenVoigt 这实际上很有意义。如果您将其发布为答案,我可以关闭此问题。谢谢

标签: performance macos cocoa opengl frame-rate


【解决方案1】:

如果你真的想这样做,你可能需要使用CGL 接口。在有效的 GL 上下文中,CGLGetCurrentContext 返回一个(不透明的)上下文对象。 CGLSetParameter 可用于设置kCGLCPSwapInterval 参数的值。 (0) 的值禁用等待垂直同步。

【讨论】:

    【解决方案2】:

    这使我能够在我的 MacBook Pro 上获得大约每秒 700 帧

    它也不是永久性的,非常适合测试/基准测试。

    Source

    【讨论】:

    • 这仍然适用于 10.9?我得试试。像旧答案中描述的那样设置交换间隔对我来说不再起作用了。
    • Go to Tools -> Show Beam Sync Tools 在最新的工具中不再存在,想法?
    • 嗯。也许下载旧/新版本的图形工具?特别是Late August 2014
    【解决方案3】:

    Xcode 11(4.2 版)中的 Quartz 调试器将此移至:

    工具->Quartz 调试设置->启用垂直同步

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多