检测QCView中的Quartz Composition是否将通过软件或硬件呈现

时间:2011-02-05 20:37:12

标签: performance cocoa quartz-graphics quartz-composer

我有一种感觉,Cocoa Quartz Compositions和GPU的组合无法由GPU处理,并且即使Core Image正常“加速”,也会落在软件渲染器上。我怎么能发现这种情况?

或者更一般地说,如何在没有实际播放构图并测量FPS的情况下检测机器是否过于无法处理特定尺寸的特定构图?

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

更新:要彻底我已经编写了一些代码来测试在一个有序但尺寸合适的窗口中以全分辨率渲染合成,尝试使用[self startRendering];[self snapshotImage];[self stopRendering];强制渲染。这花费了一段时间,看起来很合理,直到事实证明慢速机器在运行此测试时比快速机器更快。 ;)实际上,慢速机器在快速机器上的成分为2.24 FPS,相对于27 FPS。

1 个答案:

答案 0 :(得分:1)

我猜你是在问这样你可以为较弱的系统做一个更简单的后备动画吗?

一个选项可能是检查用户的硬件字符串,如下所述: GPU Chipset Detection

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

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