OpenGL ES vs Vulkan vs Angle

Конечно, меня мучали сомнения по поводу выбора OpenGL ES.

  • Действительно ли он прям ТАКОЙ кросс-платформенный?
  • Может, надо было выбрать Vulkan? Или что-то еще?
  • Готов ли я пожертвовать поддержкой Apple ради такого выбора?

Теперь у меня есть и ответы:


Vulkan

Не будем углубляться здесь насколько он хорош (а он и правда хорош):

  • Скорострельный
  • Поддерживает много-ядерность
  • ОЧЕНЬ хардверно-ориентированный

Однако меня больше интересует насколько он кросс-платформенный. Оказывается, не совсем.

  • Не все GPU его поддерживают (по крайней мере пока)
  • Apple уже объявил, что отказывается от поддержки Vulkan-а (как и OpenGL-а) в пользу своего Metal
  • Кроме того, совсем не прост в использовании
  • Предназначен для driver-level программирования, не для apps

А главное, он даже НЕ кросс-GPU !! Он GPU-specific, так что Vulkan программы для AMD и для, скажем, Nvidia будут отличаться!

Вобщем, пожалуй, правильно, что выбрал не его…


OpenGL ES

Ситуация с OpenGL ES выглядит для меня гораздо более оптимистично и обнадеживающе. Почему? Потому что:

  • Работает практически на всех GPU
  • ДОСТАТОЧНО быстрый и мощный
  • Концептуально очень чистый и последовательный
  • Требуется WebGL-ом, а значит: браузеры на ВСЕХ платформах (включая Apple) в итоге будут ДОЛЖНЫ его поддерживать. Поверьте, Google (как главный продвигатель и интересант WebGL-а) НАЙДЕТ как всех “убедить” следовать его стандарту.

Angle

Гугловский проект Angle (Almost Native Graphics Layer Engine) – неплохая иллюстрация к моему предыдущему тезису. Я раньше не знал, но главная задача этого Проекта – это кросс-платформенная поддержка WebGL-а. Это драйвер, который переводит вызовы OpenGL ES в нативные для данной платформы (если это Apple – то в Metal).

  • Отметим, что это правда ТОЛЬКО для OpenGL ES, другие API-и не покрывает.

Пока Apple поддерживает OpenGL и так, но скоро (при достаточной последовательности и настойчивости) может и перестать. Но для Angle это проблемой не станет, он все-равно примет OpenGL ES команды, и отработает их хоть на Metal-е, хоть на чем-то еще что окажется у него под рукой.

Кстати, Angle может отрабатывать их и на Vulkan-е (если надо).


Вывод:

Я безмерно рад и благодарен (себе же), что изначально выбрал OpenGL ES. Это был действительно мудрый (и наилучший) выбор.

  • Не пробовал пока на Mac-е или на iPhone, но одно ясно: с Энглом или без, но работать это будет. Не говоря уж о других платформах

Leave a Reply

Your email address will not be published. Required fields are marked *