Главная » Программирование игр под Android » OPENGL ES: ЗАЙМЕМСЯ 3D – РАЗРАБОТКА ИГР ДЛЯ ОС ANDROID

0

 

Для написания игры Большой прыгун мы использовали двухмерный движок отрисовки OpenGL ES. Теперь пришло время полностью перейти к трем измерениям. На самом деле мы уже работали в трехмерном пространстве, когда определяли область видимости и вершины спрайтов. В последнем случае координата по оси 2 каждой вершины просто устанавливалась равной нулю по умолчанию. Разница между трехмерной и двухмерной отрисовками не такая уж и большая. Для трехмерного пространства верны следующие моменты.

Вершины имеют координаты не только по осям х и уг, но и по оси z.

Вместо ортографической проекции мы будем использовать перспективную проекцию. Объекты, находящиеся далеко от камеры, будут казаться меньше.

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

Мы можем определить камеру с произвольной позицией и ориентацией в трехмерном пространстве.

Порядок, в котором будут отрисовываться треугольники объектов, теперь очень важен. Объекты, располагающиеся дальше от камеры, будут перекрываться объектами, которые находятся ближе к камере.

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

ПЕРЕД СТАРТОМ

Первый пример называется GL3DBasicsStarter. Мы можем заново использовать код класса GLBasicsStarter и просто изменить имена пакетов классов-примеров, которые мы собираемся запустить, на com. badl ogi с. androi dgames. gl 3d. Следует также добавить в манифест каждый тест в виде элементов <activity>. Все тесты будут запускаться строго в альбомной ориентации, что определено в элементах <activity>.

Каждый тест – это экземпляр абстрактного класса GLGame, логика самого теста реализуется в виде экземпляра класса GLScreen, являющегося членом реализации GLGame для конкретного теста, как и в предыдущих главах. Я буду представлять для рассмотрения лишь самые важные фрагменты класса GLScreen, чтобы сэкономить немного места. Снова примем то же соглашение для имен – XXXTest и XXXScreen для реализаций классов GLGame и GLScreen для каждого теста.

Источник: Mario Zechner / Марио Цехнер, «Программирование игр под Android», пер. Егор Сидорович, Евгений Зазноба, Издательство «Питер»

По теме:

  • Комментарии