Vulkan - это новый API для графики с аппаратным ускорением (и общих вычислений) через традиционные графические процессоры. OpenGL будет продолжать разрабатываться, так как это API более высокого уровня, чем задумано Vulkan. Первоначально называемый «glNext», можно сделать вывод, что Vulkan, скорее всего, в конечном итоге станет «OpenGL 5», но орган по стандартизации в конце концов решил, что новое имя будет лучше совпадать с относительно чистым разрывом, который API-интерфейс делает из существующих Парадигмы OpenGL.
Практические преимущества Vulkan для разработчиков игр заключаются, прежде всего, в контроле (например, в том, что он позволяет использовать его больше, потенциально позволяя улучшить оптимизацию за счет значительно большей предварительной работы со стороны разработчика). В частности:
- API ориентирован на асинхронную генерацию командных буферов в нескольких потоках и последовательную обработку этих буферов в командный конвейер. Это отражает реалии современного оборудования. Большинство высокопрофильных и / или высокопроизводительных программ, основанных на OpenGL, сегодня сами реализуют такое поведение; наличие поддержки API само по себе означает, что разработчикам не нужно самим внедрять и поддерживать эту платформу или что они могут делать это с меньшими усилиями.
- Задачи управления потоками и памятью оставлены на усмотрение приложения, а не драйвера, что позволяет разработчикам игр лучше контролировать это поведение и, следовательно, потенциально более точно адаптировать это поведение к потребностям своей игры.
- Слои валидации и диагностики могут быть включены независимо, что теоретически позволяет улучшить интеграцию инструментов с API (от чего сам OpenGL пострадал) и отключить чрезмерную валидацию, теоретически позволяя « графике на третьем уровне » быть гораздо более производительной.
- Между мобильными и настольными версиями нет жесткой разницы в API, которая теоретически облегчит портирование кроссплатформенных игр и, как минимум, уменьшит головные боли при проверке версий, которые все ненавидят.
Vulkan очень C-like / OpenGL-like в поверхностной структуре (внешний вид вызовов API и т. Д. Однако он лучше типизирован (в том int
смысле, что не все является пустым; есть соответствующие определения типов и т. Д.).
Это намного ниже уровня, чем OpenGL. Можно ожидать скачка в оперативной настройке и сложности между OpenGL и Vulkan, как это было видно при переходе от D3D9 к D3D10, который раскрыл гораздо больше деталей работы устройства GPU под прикрытием клиенту API. Переход на самом деле больше похож на D3D11 на 12, так как D3D12 сам по себе очень похож на API по Вулкану в плане возможностей.