Май
10

GLES2 Anchor Center

Всем привет!

В этом уроке я объясню, чем кардинально отличаются две версии движка AndEngine — GLES1 (2) и GLES2 Anchor Center.

Главное отличие — это различная система координат и привязка центра спрайтов.

GLES1 (2)

Вот как выглядит система координат в обычных версиях GLES1 (2):

Координата (0,0) находится в левом верхнем углу. Координата по оси Y увеличивается к низу экрана.

Т.е. чтобы сдвинуть, например, точку из координаты (0,0) в (10, 10) нужно написать так:

x = x + 10, y = y + 10

Точка сдвинется вправо и ВНИЗ:

Координаты середины экрана:

display_center_x = display_width / 2;
display_center_y = display_height / 2;

Вроде понятно. А теперь возьмём спрайт с его высотой и шириной. У спрайтов координата (0, 0) — это также верхний левый угол.

Поместим спрайт в центр экрана так, чтобы центр спрайта совпал с центром экрана.

Координаты спрайта будут такими:

spr_x = display_center_x — spr_width / 2;
spr_y = display_center_y — spr_height / 2;

Если мы хотим, чтобы спрайт двигался вниз (падал), то нужно увеличивать его координату Y.

Что же в версии GLES2 Anchor Center?

Координата (0,0) экрана находится в левом нижнем углу. Координата по оси Y увеличивается к верху экрана:


Чтобы сдвинуть точку из координаты (0, 0) в (10, 10) нужно написать так:

x = x + 10, y = y + 10

Что совпадает с предыдущей версией. НО! Точка сдвинется вправо и ВВЕРХ:


Система перевернулась вверх ногами.

А теперь второе отличие — в позиции координаты (0,0) у графики. Она находится ПОСЕРЕДИНЕ графики. Вот тут:

Чтобы поместить спрайт в середину экрана достаточно просто написать:

spr_x = display_center_x;
spr_y = display_center_y;

Всё, никаких лишних вычислений. Центр спрайта совпадает с центром экрана.

А чтобы спрайт падал вниз, нужно его координату Y уменьшать!

Ещё один плюс версии Anchor Center — быстрая работа при прорисовке экрана, т.к. OpenGL работает точно в таких же координатах.

Заключение

Я работаю с версией движка Anchor Center. Пришлось перевести всю игру Get the Candy на эту версию — было трудно, но это стоило того. Работать очень удобно. Особенно, когда какой-нибудь составной объект состоит из нескольких спрайтов.




3 коммент. к записи “GLES2 Anchor Center”

  • Очень жаль что больше нет новых публикаций(

    • Пока нет времени оформить мысли 🙂

      • Занимаешься новой игрой? Безумно интересно о чем она)

Прокомментировать



ЗАДАЙ СВОЙ ВОПРОС