> Но выходит написать vulkan намного проще чем написать OGL драйвер, это значит этот Zink упростит разработку дров для будущих GPUЗадача Zink, как я её вижу, избавить всех от необходимости тянуть реализацию OpenGL. Zink позволит решить проблемы обратной совместимости. А для новых программ, которые хотят OpenGL, я бы порекомендовал посмотреть по сторонам -- не написал ли кто реализацию OpenGL в виде подгружаемой библиотеки, выполняемой поверх vulkan целиком на стороне клиента. Ну реально, это же гораздо удобнее: в системе могут стоять разные версии OpenGL, а со своей программой можно таскать ту версию, которая больше подходит. При желании её даже можно кастомизировать под себя правкой сорцов.
> OGL все так же будет использоваться, пока кто-то не напишет фрейвморк который поможет иметь дело со сложностью vulkan.
Зачем фреймворк? Нужна библиотечка SDL-Vulkan, которая создаст окошко и подготовит всё к выводу. Hello-world на вулкане занимает 1k строк, этот SDL-Vulkan займёт 10k, с учётом всяких возможных вариантов, как можно проинициализировать. А дальше -- сложность vulkan'а перестанет быть сложностью.
То есть, прежде чем писать tl'dr который ниже, я оговорюсь: я с программированием GPU развлекаюсь может раз в пару лет, чисто по фану. Я никогда не работал в геймдеве, и если мне и случается почитывать геймдев форумы, то вот как раз в пару лет, когда у меня в очередной раз не получается работать с GPU так, как мне хочется. Короче я в этом вопросе человек с улицы, которого даже дилетантом язык не поворачивается назвать. Соответственно, я может быть чего-то глубоко не понимаю. Но судя по комментам других участников, у меня складывается впечатление, что они дальше рисования чёрных квадратов никогда не забирались, и на их фоне я чувствую себя гигантом 3d-рендеринга. Поэтому я таки нескромно изложу таки своё скромное мнение.
Сегодня пайплайн OpenGL больше под ногами путается и мешает, с его стеком матриц modelview и бесконечными glEnable/glDisable. Один хрен ты грузишь массивы вершин с сопутствующей информацией в память GPU, после чего в цикле по кадрам объясняешь раз за разом видеокарте, какой массив взять, какими шейдерами рендерить и какие там "global"ы надо передавать этим шейдерам. Нет никаких проблем, прокинуть через эти global'ы матрицу, которая отыграет роль modelview, а заодно вместе с ней координаты источников света, параметры рассеивания света или всё что там ещё нужно твоим шейдерам. С OpenGL ты будешь одни параметры прокидывать через glEnable, другие -- через glPushMatrix/glMultMatrix, третьи -- через global'ы шейдеров. С Vulkan'ом, ты просто хранишь на стороне CPU структурку с этими global'ами, как часть структуры описывающей отрисовываемый объект, и закидываешь global'ы одной структурой в видеокарту, когда возникает необходимость. То есть, с OpenGL тоже так можно, можно сделать glDisable на всё-всё-всё, и работать так же как и с Vulkan'ом, но зачем тогда нужен OpenGL? Для более простой инициализации? Для более простой инициализации можно написать SDL-Vulkan.