iPhone 3GS OpenGL странная ошибка - PullRequest
3 голосов
/ 02 декабря 2009

Я занимаюсь разработкой 2D-игры для iPhone и iPod Touch с использованием OpenGL ES 1.1. Все работает нормально на iPhone, iPhone 3G и всех моделях iPod Touch. Игра обычно отображает сцены со скоростью ~ 60 FPS.

Это также происходит на iPhone 3GS, но иногда (это совершенно случайно) 3GS снижает частоту кадров до 40 кадров в секунду, и анимация кажется прерывистой. Это также происходит, если пользователь блокирует телефон и выходит из спящего режима.

Я думаю, что это как-то связано с NSTimer, потому что, если я изменю режим триггера отрисовки на новый класс CADisplayLink, доступный в SDK 3.1+, все в порядке на всех устройствах ... и на 3GS тоже.

Я не знаю, как решить эту проблему, и я не хочу публиковать свое приложение с ограничением 3.1+. Есть еще много пользователей с устройствами 3.0.

У кого-нибудь тоже есть такая проблема с iPhone 3GS? Если это так, пожалуйста, помогите мне с обходным путем.

Спасибо!

1 Ответ

2 голосов
/ 02 декабря 2009

Вы можете использовать обе библиотеки и получить наилучший результат на устройствах 3.0 или 3.1. Это было бы хорошо, поскольку минимальная версия iPhone OS, которую использует AppStore, содержится в файле Info.plist вашего приложения.

Версия iPhone OS может быть восстановлена ​​с использованием следующего кода из Справочника классов устройств пользовательского интерфейса Apple :

float iPhoneOSVersion = [[[UIDevice currentDevice] systemVersion] floatValue];

if ( iPhoneOSVersion >= 3.1 ) {
    useNewerFramework();
} else {
    useOlderFramework();
}

Однако вы также должны убедиться, что вы установили цель развертывания в XCode на 3.0 или любую минимальную версию, на которой вы хотите работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...