Обновление приложения до iPhone 4: как прикоснуться к экрану с низким разрешением - PullRequest
3 голосов
/ 14 декабря 2010

В настоящее время я нахожусь в процессе тестирования приложения OpenGL ES для iPhone 4. Сначала я разработал приложение для iPhone 3G и в симуляторе 3G, используя этот проект в качестве отправной точки, а не Apple. что я не мог понять. Теперь я понимаю, что это могло быть ошибкой.

Когда я пытался играть в игру на iPhone 4, сенсорные события дают вывод с высоким разрешением (т.е. x от 0-639, y от 0-959), а не точки касания с низким разрешением, в которых нуждается моя игра (то есть х: 0-319, у: 0-479). Я рассмотрел несколько примеров проектов Apple, таких как GLPaint, и, похоже, это дает лишь точки касания с низким разрешением, но я не вижу, в чем разница между этим проектом и моим.

Любая помощь, которую кто-либо может оказать, будет высоко цениться, это для проекта, который должен быть через несколько дней! (Я знаю, как я мог не протестировать его на iPhone 4 или даже на симуляторе! Но ты живешь, ты учишься ...)

Ответы [ 2 ]

2 голосов
/ 14 декабря 2010

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

Я передавал сенсорную информацию из моего GLView в определенный мной GLViewController, и это касалось сенсорной информации. Он делал CGPoint для каждого касания, получая точку касания с помощью этого сообщения для объекта UITouch:

CGPoint touchPoint = [touch locationInView:self.view];

Проблема, похоже, заключается в том, что GLViewController получал местоположение касания в объекте UIView, а не в подклассах GLView этого объекта. Итак, если допустить, что glView является свойством типа GLView GLViewController, если вы измените код на

CGPoint touchPoint = [touch locationInView:self.glView];

Все отлично работает. Глупая ошибка, да, но это все хорошо учиться.

Я надеюсь, что кто-то еще, у кого есть эта проблема, может извлечь выгоду из моей безумной паники ...: -)

0 голосов
/ 14 декабря 2010

Если вы специально не установили коэффициент масштабирования CAEAGLLayer на 2,0, OpenGL ES будет работать в режиме низкого разрешения на iPhone 4. с одним исключением :

Важное замечание: Представление, поддерживаемое объектом CAEAGLLayer, не должно реализовывать пользовательский метод drawRect:. Реализация метода drawRect: заставляет систему изменять масштабный коэффициент вида по умолчанию, чтобы он соответствовал масштабному коэффициенту экрана. Если ваш код рисования не ожидает такого поведения, содержимое вашего приложения будет отображаться неправильно.

Подходит ли это для вашего случая?

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