我碰到了一堵砖墙,我想知道这里是否有人可以提供帮助。我的程序为非常小的渲染需求打开了一个 OpenGL 表面。在 MacbookPro 上,这似乎会导致显卡驱动程序将混合卡从低性能英特尔显卡切换到高性能 AMD ATI 显卡。
这给我带来了问题,因为 AMD 驱动程序似乎存在问题并使 Mac 进入睡眠状态,但它也会不必要地快速耗尽电池。有时我只需要 OpenGL 来创建静态 3D 图像,我不需要快速帧速率!
Cocoa 应用程序中有没有办法防止 OpenGL 将混合显卡切换到性能模式?
与此相关的文档是QA1734,“允许 OpenGL 应用程序利用集成 GPU”</a>:
… 在 OS X 10.6 及更早版本上,您不能选择在集成 GPU 上运行。…</p>
在 OS X 10.7 及更高版本上,有一个名为
NSSupportsAutomaticGraphicsSwitching
. 要让您的 OpenGL 应用程序利用集成 GPU,您必须在应用程序的 Info.plist 中添加此键,其布尔值为true
...</p>
因此,您只能在 Lion 上执行此操作,并且“只能在 2011 年初及之后发货的双 GPU MacBook Pro 上执行此操作。”</p>
还有一些其他重要的警告:
此外,您必须确保您的应用程序在多个 GPU 上正常工作,否则系统可能会继续强制您的应用程序使用离散 GPU。TN2229 在 Mac OS X 上支持多个 GPU详细讨论了您需要遵循的必要步骤。
和:
独立 GPU 上可用的功能在集成 GPU 上可能不可用。您必须检查您希望使用的功能是否存在于您正在使用的 GPU 上。有关 GPU 类支持的功能的完整列表,请参阅:OpenGL 功能表。