Как создать эффект увеличения в OpenGLES на iPhone? - PullRequest
1 голос
/ 19 сентября 2008

У меня есть игра OpenGL ES, которую я взламываю вместе. Одна часть этого включает просмотр большой "подобной карте" области и затем двойное нажатие на одну часть, чтобы "увеличить" ее. Как бы вы использовали OpenGL ES для обеспечения этого эффекта (учитывая, что может потребоваться увеличение различных частей карты).

Я слышал о glScale и glOrtho, но мне неясно, как они на самом деле работают, так как весь мир openGL для меня очень новый.

Ответы [ 2 ]

2 голосов
/ 20 сентября 2008

Двумерное масштабирование, которое вы описываете, может быть лучше достигнуто с помощью Core Animation. NSView (и его аналог NDA для iPhone) обеспечивают неявную анимацию при смене кадра. Все, что вам нужно сделать в этом случае, это установить такие значения origin.x и origin.y и size.width и size.height для фрейма, чтобы сделать изображение больше экрана. Если вы сделали это и включили соответствующие вызовы, чтобы запустить и зафиксировать анимацию, вы получите анимацию масштабирования бесплатно. Core Animation использует OpenGL за кулисами для своих анимаций.

Если, однако, вы чувствуете, что должны сделать это в OpenGL, могу я предложить небольшую рецензию, которую я сделал на http://www.sunsetlakesoftware.com/2008/08/05/lessons-molecules-opengl-es? Я являюсь автором Молекул , бесплатного 3 -D молекулярный визуализатор для iPhone, и я ничего не знал о OpenGL ES, прежде чем я начал этот проект. Спустя 3 недели он был в App Store, как только запустил.

Вызовы OpenGL довольно просты, а математика, которая их окружает, может вызвать у вас головную боль. Увеличение объектов на самом деле довольно просто и может быть сделано либо путем перемещения камеры, либо путем физического масштабирования объектов. Что касается молекул, я пошел по пути масштабирования объекта с использованием функции glScalef (x, y, z), где x, y и z - это масштабные коэффициенты, которые вы хотите применить к объекту модели. Я делаю масштабирование постепенно. То есть я не сбрасываю матрицу преобразования в начале каждого визуализированного кадра (используя glLoadIdentity ()), а просто немного масштабирую ее на основе пользовательского ввода. Если пользователь разводит пальцы на 5%, я увеличиваю масштаб на 5%.

Опять же, я бы предложил Core Animation для двумерного масштабирования, которое вы описываете, но добиться таких же результатов в OpenGL ES несложно.

0 голосов
/ 19 сентября 2008

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

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