Конечно, меня мучали сомнения по поводу выбора 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, но одно ясно: с Энглом или без, но работать это будет. Не говоря уж о других платформах