Рисование средствами библиотеки OpenGL ES
Прежде чем продолжить работу над рассматриваемым здесь приложением, в новый проект необходимо ввести ряд дополнительных файлов. Чуть раньше в опубликованных статьях о GLFun вы найдете следующие четыре файла: Texture2D.h, Texture2D.m, OpenGLES2DView.h и OpenGLES2DView.m. Код в двух первых файлах написан разработчиками из компании Apple с целью существенно упростить рисование изображений средствами OpenGL ES. В двух других файлах содержится класс, созданный нами на основе примера кода от компании Apple и предназначенный для настройки OpenGL на двухмерное рисование. Иными словами, мы сделали все необходимые настройки за вас. По желанию вы сможете свободно пользоваться всеми этими файлами при разработке собственных графических приложений.
В библиотеке OpenGL ES понятие спрайта или изображения как таковое отсутствует, а вместо него используется понятие текстуры (texture). Текстуры должны быть вписаны в форму или объект. В OpenGL ES изображение рисуется следующим образом: сначала рисуется квадрат (а точнее, два составляющих его треугольника), а затем текстура накладывается на этот квадрат точно по его размерам. Этот относительно сложный процесс инкапсулируется в один простой в использовании класс Texture2D.
Класс 0penGLES2DView является подклассом UlView, использующим OpenGL для рисования. Мы настраиваем это представление таким образом, чтобы системы координат OpenGL ES и представления взаимно однозначно отображались на один и тот же базис. OpenGL ES является трехмерной системой, и поэтому класс 0penGLES2DView накладывает трехмерное графическое пространство OpenGL на пиксели двухмерного представления.
Несмотря на взаимно однозначное соответствие представления и контекста OpenGL, их координаты у перевернуты. Поэтому мы должны преобразовать координату у из системы координат представления, где она увеличивается при перемещении вниз, в систему координат OpenGL, где эта координата увеличивается при перемещении вверх.
Для того чтобы воспользоваться классом 0penGLES2DView, необходимо сначала сделать его подклассом, а затем реализовать метод, фактически выполняющий все операции рисования, как показано в приведенном ниже коде. Вы можете также реализовать любые другие методы, требующиеся для представления, в том числе методы, имеющие отношение к касанию экрана и применявшиеся в примере приложения QuartzFun.
- Дата: 15-01-2015, 14:22