В OpenGL ES на iPhone, как прокрутить два изображения? - PullRequest
0 голосов
/ 04 марта 2009

Использование UIView и Quartz оказалось слишком медленным для моей 2D игры

Ответы [ 2 ]

0 голосов
/ 04 марта 2009

Насколько велики ваши изображения и насколько медленно это слишком медленно? Используя UIScrollView с содержащим UIView, чье содержимое рисуется через Quartz, я смог плавно прокрутить представления размером до 2000 x 2000. Если вы не перерисовываете содержимое своего изображения каждый кадр, а вместо этого перемещаете положение своих представлений и позволяете Core Animation делать все остальное, я уверен, что вы сможете добиться желаемой производительности без перехода на OpenGL.

Большинство проблем с двумерной производительностью, которые я видел, являются результатом того, что люди пытались сделать всю свою анимацию в drawRect, постоянно перерисовывая свой контент. Вы хотите нарисовать один раз, а затем просто переместите начало нарисованного вида или слоя вокруг. Содержимое представления кэшируется как текстура OpenGL, поэтому его очень удобно анимировать.

Для двумерной работы я рассматриваю OpenGL как последнее место, к которому следует обратиться после того, как вы исчерпали все другие альтернативы. Вам понадобится гораздо больше времени, чтобы делать то же самое, что и вы, используя простые UIViews и Core Animation.

0 голосов
/ 04 марта 2009

Как правило, в OpenGL существует два способа «прокрутки», т.е. смещение отображаемого содержимого перпендикулярно направлению просмотра:

  1. Настройте просмотр, другими словами «переместите камеру», чтобы содержимое сместилось.
  2. Перемещайте содержимое напрямую, сохраняя камеру неподвижной.

Они, конечно, полностью эквивалентны и обратны друг другу.

Они оба предполагают, что вы выполняете полное перерисовывание вашей сцены для каждого кадра. Прокрутка в более «классическом» смысле путем копирования содержимого буфера кадра при смещении на величину (dx, dy) не является техникой, которая очень подходит для OpenGL.

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

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