Производительность OpenGL / усиление помех? - PullRequest
1 голос
/ 04 сентября 2011

В OpenGL (ES для Android, если это важно) использует GL10.glTranslatef(x, y, z);, тогда рисование объекта (в моем случае шестиугольная плитка) более эффективно / практично, чем передача новых координат объекту и рефакторинг буферов (если необходимо). быть)?

1 Ответ

4 голосов
/ 04 сентября 2011

Это зависит от остальной части вашего кода.Вероятно, разница будет незначительной, если вы говорите, например, о разнице для одного квадроцикла.Золотое правило - избегать изменений состояния и оптимизировать геометрию вокруг этой цели.Если у вас есть, скажем, 10000 плиток, которые вы можете нарисовать за один вызов glDrawElements или glDrawArrays, если вы переводите в своем коде и массово загружаете местоположения вершин, то вполне вероятно, что вы увидитеулучшение.Если вы делаете один вызов glDrawElements или glDrawArrays на плитку, то вряд ли вы заметите какую-либо разницу в любом случае.

Итак: это стоящее изменение, если оно позволяет объединять больше геометрии вместеиначе это, вероятно, не будет иметь большого шанса.Из моего анекдотического опыта, на устройстве iOS первого поколения с PowerVR MBX с движком в стиле спрайтов я перешел от устройства, немного борющегося с несколькими сотнями спрайтов, к способности обрабатывать тысячи.Пакетирование моей геометрии означало, что синхронизация GPU / CPU больше не была узким местом.

...