Лучший способ визуализации 2-х анимированных спрайтов openGl ES - PullRequest
2 голосов
/ 17 марта 2011

Я пишу 2D-игру на Android и нацеливаюсь на телефоны с минимальной поддержкой OpenGl ES 1.1.

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

Я хотел придерживаться Opengl 1.1, поэтому я избегал шейдеров и интересовался, как другие люди подошли к реализации анимированных спрайтов.

Сначала я подумал:

  1. Имейте единственный буферный объект вершины с одним набором координат текстуры, затем используйте много предварительно загруженных текстур, которые будут заменены во время выполнения в правильном порядке.
  2. Имейте только один лист спрайта текстуры и изменяйте координаты текстуры во время выполнения для отображения правильного подраздела листа спрайта.

Есть ли более умный или более эффективный способ сделать это без шейдеров?

Спасибо

1 Ответ

2 голосов
/ 17 марта 2011

Выберите # 2, если у вас есть только две опции.

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

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

  2. Перенос ресурсов (включая вершины) в VRAM (ближайшую память к графическому процессору) может быть дорогостоящим, посколькуих нужно скопировать на более медленную шину.Это похоже на ситуацию сервер-клиент.GPU + VRAM - сервер, CPU + RAM - клиент, подключенный через сеть PCI-bus.Однако это может варьироваться в зависимости от структуры системы и модели памяти / шины.

...