Я разрабатываю 2D-игру для iOS, но мне трудно заставить рисовать работать быстро (60 кадров в секунду на дисплее Retina).
Я впервые использовал UIKit для рисования, которыйконечно не подходит для игры.Я не могу нарисовать пару спрайтов без замедления.
Затем я перешел к OpenGL, потому что я прочитал, что он ближе всего подходит к графическому процессору (что, я думаю, означает, что он самый быстрый из возможных).Я использовал glDrawArrays ().Когда я запустил его на симуляторе, FPS упал, когда я достиг более 200 треугольников.Люди говорили, что это потому, что симулятор или компьютер не оптимизированы для работы с iOS OpenGL.Затем я протестировал его на реальном устройстве, и, к моему удивлению, разница в производительности была действительно небольшой.Он по-прежнему не может выполнить эти несколько треугольников без сбоев - и я знаю, что в других играх на iOS используется гораздо больше полигонов, шейдеров, 3D-графики и т. Д.
Когда я запускал его через Инструменты для проверки производительности OpenGL, он сказалЯ мог бы ускорить его с помощью VBO.Поэтому я переписал свой код, чтобы использовать вместо него VBO, обновляя все вершины в каждом кадре.Производительность увеличилась очень мало, и я до сих пор не могу превзойти 200 треугольников при постоянных 60 FPS.И это только 2D-рисунок без изменения / преобразования контекста.Я также еще не писал игру - нет объектов, не выполняющих задач, интенсивно использующих процессор.
Все, кого я спрашиваю, говорят, что OpenGL - это высочайшая производительность.Что я мог делать не так?Я предполагаю, что OpenGL может обрабатывать много полигонов, которые обновляются каждый кадр - это правильно?Какой метод используют другие игры, которые, как я вижу, работают нормально, например Infinity Blade, который является 3D, или даже Angry Birds, который имеет много постоянно обновляемых спрайтов?Что рекомендуется при создании игры?