До сих пор мы с успехом осваивали плоские двухмерные объекты. Пришло время переходить к объемным — трехмерным. В принципе, они не намного сложнее, зато у них гораздо больше вершин (если создавать их из массива вершин) и трансформаций (если пытаться квадрат превратить в куб).
Наверное, сначала стоило рассмотреть точки и линии, но раз уж мы уже наложили текстуру на квадрат и раскрасили треугольники, будем скорее переходить к более интересным формам!
Вернемся мы еще и к трансформациям, и к вращению, рассмотрев их в деталях. Даже материалы для новичков мы еще не успели освоить в полном объеме… Так что впереди и нас еще множество уроков!!
Для начала урезаем метод “drawView”
Попрощайтесь с утомительным кодированием: убираем все лишнее и возвращаем метод “drawView” в первоначальное состояние. Продолжить чтение »
Я решил перейти сразу к текстурам, рассудив, что накладывать их на объект с одной плоскостью проще, чем на многогранный (трехмерный). Поскольку при программировании в iPhone OpenGL ES именно этот момент вызывает наибольшее количество вопросов, вкратце остановимся на наложении текстур в общем.
Я многое пропустил в предыдущих уроках, чтобы сразу перейти к отображению на экране объектов и экспериментам с ними вместо бесчисленных страниц с описаниями различий между OpenGL ES и OpenGL. На этот раз придется углубиться в опущенные ранее технические детали.
С учетом того факта, что мы рассмотрим множество моментов, этот урок получится действительно длинным.
Как уже упоминалось, основная часть кода относится к загрузке текстур в программу и непосредственно в OpenGL для последующего использования. Ничего сложного, но поработать с iPhone SDK придется немало.
Готовимся к текстурам
Перед тем, как использовать текстуру, предварительно ее нужно загрузить в приложение, отформатировать для OpenGL и сообщить, где ее искать. Остальное будет ничуть не сложнее раскрашивания квадрата в прошлом уроке. Продолжить чтение »
Я и обещал в прошлом уроке, устав от примитивных белых объектов на экране, начнем добавлять к ним цвета (помните исходный шаблон Apple, который мы удалили?) Просьба отнестись к этому уроку крайне внимательно, поскольку некоторые из представленных здесь концепций позже пригодятся нам в наложении текстур (да-да, осталось совсем немного).
В OpenGL ES цвет можно задавать сплошной заливкой для целого объекта, а можно раскрашивать объект, добавляя к нему полутона (когда цвета спектра плавно переходят один в другой). Начнем с самого простого — раскрасим наши объекты в один цвет.
Смена цвета, как обычно, переводит OpenGL в определенное «состояние»: все последующие операции рисования будут выполняться данным цветом, даже если вызвать для “сброса” функцию “glLoadIdentity()” (а все потому, что она работает только с вершинами). Поэтому с помощью всего одной строки кода мы можем окрасить наши объекты в любой цвет — пока остановимся на синем. Продолжить чтение »
В этом уроке, базируясь на уже изученном материале, мы одновременно выведем на экран треугольник и квадрат — с перемещением. Перемещение объекта — один из видов трансформации.
К модели (объекту) в OpenGL ES применимы три разных вида трансформаций:
- Перемещение Translate — движение объекта в трехмерном пространстве.
- Вращение Rotate — вращение вокруг оси X, Y или Z.
- Масштабирование — изменение размеров объекта. Применяется преимущественно в системах двухмерной ортографической проекции, т.к. в трехмерном пространстве размер визуализируемого объекта уменьшается с его отдалением (т.е. с возрастанием негативного значения по координате Z). Подходит для “спецэффектов”.
Для демонстрации функциональных возможностей сначала одновременно выведем на экран квадрат и треугольник с помощью функции “Translate“, а после перейдем к двум следующим.
Перемещение
За эффект перемещения в OpenGL ES отвечает одна единственная функция с говорящим за себя названием — “glTranslatef()“. Обратили внимание на букву “f” после слова “translate”? Значит, OpenGL будет принимать данные с плавающей запятой. Для обработки данных с фиксированной точкой вызывается функция “glTranslatex()“. Этот вариант применим там, где аппаратное обеспечение не предусматривает сопроцессора для вычислений с плавающей точкой, но в iPhone он есть, поэтому будем придерживаться первой опции. Продолжить чтение »
Вообще-то, квадраты в OpenGL ES примитивами не являются, но работать с ними крайне удобно, а визуализировать — ничуть не сложнее треугольника. В этом уроке, взяв за основу код треугольника, мы превратим его в квадрат. Визуализацию опять будем выполнять статичную, но вплотную подберемся к трансформациям (т.е. перемещению). Само собой, позже квадрат можно будет превратить в куб, а потом и в куб с текстурами.
Краткий обзор прошлого урока и введение в следующий
На прошлом уроке, оттолкнувшись от «чистого холста» в виде проекта Xcode мы получили белый треугольник с заливкой. Для этого мы создали массив вершин, с помощью “glVertexPointer()” сообщили OpenGL о данных и их формате, активировали готовность к визуализации массива вершин и выполнили собственно рендеринг с помощью “glDrawArrays()“.
На сей раз, взяв этот код за основу, мы сделаем из треугольника квадрат. Для этого достаточно будет отредактировать пару строк кода. Во-первых, как все, наверное, уже догадались, количество точек с 3 нужно изменить на 4. Изменится и способ рисования, о чем и сообщим OpenGL через “glDrawArrays()“. Продолжить чтение »
Базовые фигуры (примитивы) — основные элементы, из которых при рисовании выстраиваются сложные объекты. В OpenGL ES такими примитивами выступают объекты Point (Точка), Line (Линия), Triangle (Треугольник). Думаю, их названия говорят сами за себя.
В этом уроке мы будем анализировать код, на основании которого впоследствии можно будет создавать собственные проекты.
Примитив №1 — треугольники
Треугольники — самые сложные из базовых фигур, но они настолько удобны и полезны, что с них мы и начнем. Чтобы нарисовать треугольник, необходимо указать OpenGL три координаты трехмерного пространства — остальное программа сделает сама.
Первым делом создайте копию проекта из урока “OpenGL ES: настройка проекта в Xcode” или загрузите исходный код отсюда. Открыв проект в Xcode, перейдите к файлу “EAGLView.m” и найдите метод “drawView“. Начинается настоящее волшебство!
Первым шагом зададим параметры треугольника. Сразу обращаю внимание на то, что мы будем работать с координатами двух типов: Model и World. Координаты Model относятся к отрисовываемому примитиву, а координаты World сообщают OpenGL о его местонахождении относительно зрителя (который в пространстве World всегда находится в точке (0.0, 0.0, 0.0)).
Итак, задаем координаты треугольника в пространстве Model через три трехмерные координаты (X, Y, Z):
1 2 3 4 5
| const GLfloat triangleVertices[] = {
0.0, 1.0, -6.0,// Верхняя центральная точка треугольника
-1.0, -1.0, -6.0,// нижняя левая
1.0, -1.0, -6.0,// нижняя правая
}; |
Заметьте, что координаты описаны последовательно, в направлении против часовой стрелки (оно может быть и противоположным — главное, задавать их последовательно и придерживаться единой схемы). Для начала я бы рекомендовал работу по схеме “против часовой стрелки”, поскольку именно такой порядок требуется для некоторых рассматриваемых ниже функций. Продолжить чтение »
Настройка OpenGL ES в Xcode на iPhone не представляет собой абсолютно ничего сложного, особенно после того как в пакет SDK разработчики из Apple добавили соответствующий шаблон. Все что нужно — это проект, в который легко и быстро добавляется нужный код. Именно этим мы и займемся в данном уроке.
Откровенно говоря, не вижу необходимости перенабирать весь приведенный здесь код. Если хотите сразу перейти к практическим проектам по OpenGL — пожалуйста. Пропустив урок по настройке, вы ничего не потеряете, поскольку вдаваться в подробности особо я не буду — можете переходить сразу в конец урока и загружать файл проекта.
Для начала запустим Xcode и создадим новый проект. Выберите шаблон “OpenGL ES Application” и сохраните проект, куда сочтете нужным.

Полагаю, что все уже в общих чертах знакомились с этим шаблоном, а, возможно, даже и запускали приложение. Сейчас нам предстоит удалить код для вращающегося цветного квадрата и добавить в представление буфер глубины (т.е. сделать его по-настоящему трехмерным). Полученный результат пригодится нам для последующих уроков. Продолжить чтение »
В этом уроке речь пойдет о создании приложения Hello World для cocos2d. Тем, кто еще не выполнил установку и компиляцию cocos2d, стоит прочесть предыдущий урок.
Шаг 1
Командой “File->New Project” создайте новый проект.
Шаг 2
Выберите опцию “Window-Based Application“. Продолжить чтение »
Cocos2d — набор средств разработки, ориентированный преимущественно на создание игр на iPhone и iTouch. Изначально данный SDK создавался для языка Phyton (лицензия GNU LGPL).
Где загрузить
ЗДЕСЬ!
Требования
- Mac и Mac OS с поддержкой iPhone SDK (например, Mac OS 10.5.6)
- Xcode v. 3 и выше
- iPhone SDK
Подробнее об установке Xcode и iPhone SDK, а также о том, где их взять, можно прочесть здесь.
Установка
1. Загружаем отсюда.
2. Распаковываем архив и копируем файлы в папку “Library” (может быть и любая другая, но я выбрал “Library“). Продолжить чтение »
В этом примере мы создадим скачущий мяч, используя средства Cocos2d по сценарийной анимации. Урок предполагает знакомство с основами настройки проектов в cocos2d (при необходимости рекомендуем обратиться к предыдущим урокам, раз, два). Представленный проект основан на примере с именем “Click And Move“, входящем в состав пакета cocos2d.
Шаг 1
Выполните “File->New Project“, выбрав “Window-Based Application“. Присвойте проекту имя “BouncingCocos“.
Шаг 2
Выберите изображение для скачущего мяча и добавьте его в группу “Resources“. Свой мяч я загрузил отсюда.

Шаг 3
Добавьте в проект файлы Cocos2d (или сошлитесь на библиотеку, если таковая создана). Для добавления файлов щелкните на имени проекта в списке “Group & Files“, удерживая нажатой клавишу <Control>, и включите имеющиеся файлы из дистрибутива Cocos2d. Продолжить чтение »
|
Последние комментарии
пока я не получил лицензию разработчика, но уже очень хочу...
vodos, да...
Злые вы,...
iPhone Application writes data to a text file,...
ошибка...