2

我的应用程序链接到这些框架:

Cocoa.Framework
AppKit.Framework
CoreData.Framework
Foundation.Framework

请注意,OpenGL.Framework 未链接。但是,在设置 DYLD_PRINT_LIBRARIES=1 后,我注意到:

...

dyld:加载:/System/Library/Frameworks/ OpenGL.framework /Versions/A/ OpenGL

dyld:加载:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries /...

dyld:加载:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries /...

dyld:加载:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries /...

dyld:加载:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries /...

dyld:加载:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries /...

...

这是一个大问题,因为正如 [cocoa-dev 列表][1] 中所述,OpenGL 框架会导致 NVidia 显卡为较新的 MacBook Pro 启动。

正如预期的那样,我的应用程序导致 NVidia 卡开机。更糟糕的是,关闭窗口时框架没有卸载。

我拥有的唯一非标准图形元素是一些自定义 NSBezierPath 图纸和阴影。

本质上,当我的应用程序启动时,使用集成显卡直到显示窗口,然后独立显卡打开电源并保持打开状态,无论窗口状态如何。


回答

对于具有 NSBezierPaths 或清除背景的 NSView,请确保设置:[myView setWantsLayer:NO]

4

2 回答 2

1

我会说你使用了一个需要 Cocoa 来加载 OpenGL 的功能。像 CoreAnimation,或者任何花哨的 UI 东西。您是否在应用中显示视频?可能是原因。

链接到相同框架的全新示例项目是否也会发生同样的事情?

于 2010-11-05T14:39:04.527 回答
1

此外 - Apple 似乎增加了对允许您的应用程序尝试在集成显卡上运行的支持。

NSSupportsAutomaticGraphicsSwitching 为 true 将有助于 2011(及以后?)macbooks。

http://developer.apple.com/library/mac/#qa/qa1734/_index.html%23//apple_ref/doc/uid/DTS40010791

您必须使用此设置测试您的应用程序。

于 2012-10-02T15:09:04.657 回答