防止在Cocoa App中加载OpenGL.framework

时间:2010-10-29 18:32:15

标签: macos cocoa opengl ios-frameworks

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

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

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

  

...

     

dyld:loaded:/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL

     

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

     

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

     

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

     

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

     

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

     

...

这是一个很大的问题,因为正如[cocoa-dev list] [1]所述,OpenGL框架使得NVidia显卡可以为更新的MacBook Pro开启。

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

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

基本上,当我的应用程序启动时,使用集成图形,然后显示窗口,然后启动独立图形,保持在,无论窗口状态如何。


ANSWER

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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

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

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