объекты массива вершин в android opengl-es

Я слышал, что большинство недавно выпущенных устройств Android поддерживают VAO opengl-es. Я пытаюсь разработать приложение в среде opengl-es 2.0. Однако мне интересно

(Q1) Поддерживает ли большинство используемых Android-устройств (выпущенных несколько лет назад) VAO? если нет, то не лучше ли было бы не использовать VAO, потому что нам придется писать отдельные коды для устройств, которые поддерживают VAO, и для тех, которые этого не делают.

(Q2) И действительно ли это дает нам большое преимущество в производительности (по сравнению с использованием только объектов буфера вершин (VBO)) для их применения? если да, то как мы можем использовать их в среде opengl-es2.0?


person NamHo Lee    schedule 23.05.2015    source источник


Ответы (1)


Согласно базе данных возможностей на delphigl.de (*), 65% всех устройств имеют данные для поддержки расширения GL_OES_vertex_array_object по состоянию на 22 мая 2015 г., с данными для 459 устройств.

Обратите внимание, что это процентная доля моделей устройств, а не процентная доля проданных единиц устройств.

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

Вы, конечно, можете проверить расширение во время выполнения и использовать разные пути кода. Стоит ли оно того? Это, очевидно, зависит от варианта использования, и вам нужно протестировать и сравнить его самостоятельно, чтобы быть уверенным.

Я чувствую, что это, вероятно, не очень поможет для большинства случаев использования. В частности, если вы хотите поддерживать устройства, которым несколько лет, многие из них не будут иметь очень мощных графических процессоров. VAO помогают снизить нагрузку на ЦП при настройке вершин, но вряд ли это будет очень существенно, если вы ограничены обработкой фрагментов графическим процессором, что часто имеет место в приложениях с интенсивным использованием графики.

Ситуация была бы другой, если бы вы смотрели на настольные системы, где современные высокопроизводительные графические процессоры стали настолько мощными, что почти все, что вы делаете, может быстро стать узким местом.

Возможно, вам лучше потратить время на более общие оптимизации производительности. Убедитесь, что ваши вызовы отрисовки достаточно велики, не меняйте состояние чаще, чем необходимо, и т. д.

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

(*) Я не имею никакого отношения к этому веб-сайту, кроме как как пользователь.

person Reto Koradi    schedule 23.05.2015
comment
Спасибо за хороший совет!! если подумать, мое приложение даже не будет настолько интенсивным с графикой... думаю, мне следует больше сосредоточиться на других аспектах - person NamHo Lee; 23.05.2015