Какой метод рисования самый быстрый на iOS? - PullRequest
0 голосов
/ 13 февраля 2012

Я разрабатываю 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, который имеет много постоянно обновляемых спрайтов?Что рекомендуется при создании игры?

1 Ответ

1 голос
/ 13 февраля 2012

OpenGL определенно будет вашим самым быстрым вариантом.Даже на самых старых устройствах iOS вы можете запустить около 20 000 полигонов со скоростью 30+ кадров в секунду.

Звучит так, будто вы делаете что-то неправильно или лишнее.Невозможно попытаться угадать, что это может быть, не видя ваш исходный код.

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

...