OpenGL на Android по сравнению с iOS: оптимизации и их различия

Я пишу приложение OpenGL ES 1.1 для Android и iPhone. Движок OpenGL ES находится в общей библиотеке и доступен через NDK на Android.

Я хочу оптимизировать производительность OpenGL. Есть много видео и ресурсов, например:

http://www.vizworld.com/2010/02/ngmocos-tim-omernick-optimizing-opengl-iphone/

http://developer.apple .com / library / ios / # documentation / 3DDrawing / Conceptual / OpenGLES_ProgrammingGuide / Performance / Performance.html # // apple_ref / doc / uid / TP40008793-CH105

http://developer.apple.com/library/ios/ # documentation / 3DDrawing / Conceptual / OpenGLES_ProgrammingGuide / TechniquesforWorkingwithVertexData / TechniquesforWorkingwithVertexData.html

OpenGL ES 2.0: поиск советов по производительности VBO / оптимизации для многих движущихся вершин

Когда VBO быстрее, чем "простые" OpenG?

https://gamedev.stackexchange.com/questions/1068/opengl-optimization-tips

Но в целом есть хорошо известные универсальные методы, такие как:

  • Использование объектов буфера вершин (VBO)
  • Минимизируйте изменения состояния OpenGL
  • Используйте атлассирование текстуры, где это возможно, чтобы избежать необходимости выбирать много разных текстур

Некоторые методы, o r может быть немного более чувствительным по своей специфике и может отличаться между Android и iPhone, и это то, что меня интересует.Например:

  • Чередование данных вершин внутри каждой вершины: например, координата вершины; текстурная координата; обычный. Есть ли предпочтительный порядок элементов при чередовании?
  • Дополните каждую вершину следующим кратным некоторого числа байтов. Я вижу цифру 32, но в некоторых местах видел также 4 или 8.
  • Подумайте об использовании краткого или аналогичного значения для каждой координаты вершины, а не числа с плавающей запятой

Итак, мой вопрос: каковы более тонкие детали волшебных оптимизаций, таких как последний список выше, которые различаются между Android и iPhone? Чем они отличаются, какая стратегия лучшая? Просто использовать значение, подходящее для обоих миров? (Точная настройка таких деталей во время выполнения в зависимости от платформы может быть немного чрезмерной?)

10
задан Community 23 May 2017 в 10:30
поделиться