Запретить загрузку OpenGL.framework в приложение Cocoa - PullRequest
2 голосов
/ 29 октября 2010

Мое приложение связывается с этими Каркасами:

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

Обратите внимание, что OpenGL.Framework НЕ связан.Однако после установки DYLD_PRINT_LIBRARIES = 1 отмечу, что:

...

dyld: загружен: /System/Library/Frameworks/OpenGL.framework/ Версии / 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/...

...

Это огромная проблема, потому что, как отмечено в [список какао-разработчиков] [1], платформа OpenGL заставляет графическую карту NVidia включаться для новых MacBook Pro.

Как и ожидалось, мое приложение вызывает включение карты NVidia.Что еще хуже, фреймворк не выгружается при закрытии окна.

Единственные нестандартные графические элементы, которые у меня есть, - это несколько пользовательских рисунков NSBezierPath и тень.

По сути, когда мое приложение запускает интегрированную графику, используются до тех пор, пока не отобразится окно, а затем включится дискретная графика, а останется включенным независимо от состояния окна.


ОТВЕТ

Для NSView с NSBezierPaths ИЛИ очистить фон, обязательно установите: [myView setWantsLayer: NO]

Ответы [ 2 ]

1 голос
/ 02 октября 2012

Также - похоже, что Apple добавила поддержку, позволяющую вашему приложению пытаться работать на встроенной видеокарте.

NSSupportsAutomaticGraphicsПереключение к истине поможет для MacBook 2011 года (и более поздних?).

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

Вы должны протестировать свое приложение с этим параметром.

1 голос
/ 05 ноября 2010

Я бы сказал, что у вас есть функция, которая требует Какао для загрузки OpenGL. Как CoreAnimation или какой-нибудь модный пользовательский интерфейс. Вы показываете видео в своем приложении? Может быть причина.

Происходит ли то же самое в совершенно новом примере проекта, который ссылается на те же фреймворки?

...