0

我感觉有些 Cocoa Quartz Compositions 和 GPU 的组合无法由 GPU 处理并且依赖于软件渲染器,即使 Core Image 正常“加速”。我将如何发现这种情况?

或者更一般地说,我如何检测机器功能太弱而无法处理特定大小的特定组合,而无需实际播放组合并测量 FPS?

(通过在隐藏窗口中播放合成来测量 FPS 不太可能起作用,因为 QCView 可能会检测到这种情况并优化整个操作或其中的一部分。即使它今天没有这样做,它也可能开始这样做随着 Apple 的下一次更新 - 这将是一个不可靠的解决方案。)

更新:为了彻底,我确实编写了一些代码来测试在一个有序但大小合适的窗口中以全分辨率渲染合成,试图强制渲染以[self startRendering];[self snapshotImage];[self stopRendering];. 这花费了大量时间,起初看起来很合理,直到结果证明慢速机器在运行此测试时比快速机器更快。;) 实际上,慢速机器以微不足道的 2.24 FPS 渲染构图,而在快速机器上则为 27 FPS。

4

1 回答 1

1

我猜您是在问,以便您可以为较弱的系统制作更简单的后备动画?

一种选择可能是检查用户的硬件字符串,如此处所述: GPU 芯片组检测

glGetString可以返回 GL_VENDOR、GL_RENDERER、GL_VERSION 或 GL_EXTENSIONS。理论上,您可以使用 GL_VENDOR 来识别英特尔 GMA 太慢,或者将 GL_RENDERER 与已知性能不佳的 GPU 列表进行比较。如果您只为 10.6+ 编写代码,则只需与 Intel Mac 中使用的 GPU 进行比较,因此列表不应太长。

这可能不是您正在寻找的优雅解决方案,但它应该可以解决问题。如果他们愿意,我还会为用户提供覆盖以选择更高或更低质量的图形。

于 2011-02-12T01:56:34.193 回答