Начнем со второго, потому что это более древнее зло. Как известно, OpenGL - это стандарт. Все, что вне его описания уходит либо в расширения, либо реализуется, как это считает нужным вендор. Расширения как бы тоже стандаритизированы, но вот их использование не является обязательным, а всего лишь рекомендация. Даже если вендор - это Google, а Google - это один из ключевых участников Khronos, совершенно не факт, что расширение будет на каком-нибудь Pixel-е. Поэтому лучше их вообще не использовать. Ну или обмазаться кучей проверок (на одной работе была отдельная ветка кода под `
if (IE6)` - видимо тут так же надо - да, именно так и надо, к сожалению).С Vulkan-ом +/- все то же самое, только еще и кода в 100500 раз больше приходится писать просто, чтобы его инициализировать - напоминает старый DirectX.
Теперь к опенсорсу. Казалось бы, что плохого, что не нашлось в документации - найдется в коде. Как бы да, если вы пишите исключительно под Pixel. Но у нас же есть еще Xiaomi, Samsung, Huawei и прочие. И у каждого свой форк Андроида. И к их коду, как правило, доступа нет (если есть - поправьте и покажите, где оно лежит). В итоге по документации и гугловому коду оно должно работать, а по факту - держи рандомный код ошибки и сообщение, и сиди кури мануалы по железу, чтобы понять, что же там не так - иначе я хз как это понять.
И это я, слава богу, сижу достаточно далеко от гуи - по большей частью за JNI даже. Что там на гуе - боюсь представить. Хотя нет, не боюсь - на прошлой работе был проект под Андроид гуйный, и мы там намучились с доступностью, потому что она, опять таки, у всех вендоров (не) работает по-разному.