2011-02-05 43 views
0

我有一种感觉,可可Quartz Compositions和GPU的组合不能由GPU来处理,并且会回退到软件渲染器,甚至如果核心图像正常“加速”。我将如何检测这种情况?检测QCView中的Quartz Composition是否会通过软件或硬件渲染

或者更一般地说,我如何检测到一台机器的功率太低,无法处理某个特定大小的某种成分,而无法实际播放该成分并测量FPS? (通过在隐藏窗口中播放构图来测量FPS不太可能奏效,因为QCView可能会检测到这种情况并优化整个操作或其中的一部分。即使它今天没有这样做,可能开始做与苹果的下一个更新 - 这将会是一个不可靠的解决方案)

更新:是彻底的我做了编写一些代码来测试渲染全分辨率组成有序了,但正确试图强制渲染与[self startRendering];[self snapshotImage];[self stopRendering];发生。这花了一段时间,看起来很合理,直到结果表明慢速机器运行这个测试比快速机器更快。 ;)实际上,慢速机器在快速机器上以2.24 FPS和27 FPS的速度进行组合。

回答

1

我猜你在问,这样你可以为较弱的系统制作一个简单的回退动画?

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

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

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

+0

还有一些来自Apple的示例代码glcheck.c。尽管如此,根据一份清单工作感觉很不好。如果列表不完整,包括所有已知的慢速Mac GPU?甚至全面禁止英特尔感觉不对 - 也许在5年左右时间内,他们将被赶上足以运行今天的应用程序。 ;)尽管如此,还没有找到更好的解决方案。 – 2011-02-13 02:29:02

相关问题