Двумерное масштабирование, которое вы описываете, может быть лучше достигнуто с помощью 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 несложно.