Производительность OpenGl / увеличение помех?

1

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

Теги:
performance
opengl-es

1 ответ

4
Лучший ответ

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

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

  • 0
    Спасибо за подробный ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню