LINUX.ORG.RU

Кроссплатформанная графическая библитека

 , , ,


0

1

Уточню, что речь идёт о трёхмерной графике.

Итак:

OpenGL - поддерживается буквально везде, включая веб (WebGL) и мобилки. Можно писать на пересекающемся подмножестве OpenGL 3.0 Core и OpenGL 3.0 ES и иметь современный код с шейдерами, который везде работает. Минусы: в теории имеет меньшую производительность, чем более новые библиотеки, но насколько я понимаю 95 процентов приложений не почувствуют разницу. Неясное будущее, как минимум на яблоках помечен как deprecated и может быть удалён в любой момент.

Vulkan - предлагается как дефолтная замена OpenGL. В теории должен давать более высокую производительность, а также имеет более определённое будущее. На яблоках работает через MoltenVK, на остальных платформах нативно. В вебе не работает.

Metal - замена OpenGL от Apple, очевидный минус - работает только на яблочном оборудовании. Vulkan выглядит привлекательнее.

DirectX - альтернативна OpenGL и Vulkan от Microsoft. Очевидный минус - работает только на винде и икс коробке. Vulkan выглядит привлекательнее.

Выходит что по факту выбор получается между OpenGL и Vulkan, так как остальные библиотеки это библиотеки одной платформы, причём вряд ли дающие каких-то киллер-фич по сравнению с этими двумя.

Но OpenGL могут в любой момент выкинуть из яблочных устройств, а Vulkan не работает в браузере.

Интересно, какие шансы выкидывания OpenGL из яблок и каковы перспективы появления Vulkan в браузере (например, через прослойку аналогичную MoltenVK). Или же любой уважающий себя движкописатель обязан поддерживать обе библиотеки (допустим, нам важен и веб, и десктопы, и мобилки) или вообще все четыре.

★★★★★

Это зависит от того, насколько уважающий себя движкописатель богат. У кого-то денег на разработку только под один движок, у кого-то на два, а у кого-то и на четыре.

Shushundr ★★★
()

OpenGL 3.0 Core

Нет такого. Разделение на Core и Compatibility произошло только в версии 3.3.

Vulkan - предлагается как дефолтная замена OpenGL. В теории должен давать более высокую производительность

Вовсе не обязан; в общем случае позволяет меньше опасаться UB в драйверах, получать сопоставимую с OGL производительность и меньше блочить gui thread ожиданиями gpu (хотя у amd-бояр и в OGL рендерится асинхронно по возможности).

В вебе не работает.

Вроде бы есть некий WebGPU. Эдакий Vulkan для Web. Но насколько он хорош и насколько он Vulkan, мне лично не ведомо. Кроме того, ЕМНИП, в WebGL нельзя современные шейдеры.

robus ★★★★★
()

На текущий момент OpenGL работает везде. Всё остальное работает далеко не везде. Весь твой посыл в том что тебе надо везде. Выбор очевиден это OpenGL. Опять же что тебе от него надо и насколько ты прям будешь упарываться в его кишки и особенности. Так что рендер это считай сущность в себе отдельная почти. Тогда и только тогда когда твой рендер уже тупо невозможно запустить на платформе ты пишешь новый рендер для этой платформы и всё =)

Если есть время и деньги можно под каждую платформу написать свой самый родной для неё рендер на самом родном для неё API.

Всё выглядит как шалтай болтай с этими апи, только опенгл везде всех и вся и всё, вулкан кое как старается тоже везде, но сейчас переходный период для него длинной в годаааа. И на текущий момент вылкан не конкурент опенглу и обратно они ващее паралельную и независимую жизнь ведут.

ИМХО. Надо фичей бери вулкан и смирить что дропаешь всё строе железо, веб, бОльшую часть мобилок. Хочешь везде бери OpenGL, альтернатив у тебя тупо нету.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)

Но OpenGL могут в любой момент выкинуть из яблочных устройств, а Vulkan не работает в браузере.

Vulkan не работает на старом железе. А вот браузер называть платформой это сомнительная практика, приводящая ко всяким электронам вместо нормальных программ.

firkax ★★★★★
()

В названии топика косяк: библитека -> библиОтека

Даже два: Кроссплатформанная -> КроссплатформЕнная

Я недавно видел графическую библиотеку для 3D хорошую, которая разрабатывалась 20+ лет, с книжкой-учебником. Но не могу вспомнить название… Посмотрел зависимости freecad, blender и stellarium но там её нет, а была в какой-то распространённой программе.

Вспомнил. Это vtk:

https://vtk.org/about/#history

И видел я её в freecad (просто не вспомнил).

Shushundr ★★★
()
Последнее исправление: Shushundr (всего исправлений: 5)

ОпенГЛ на маке не только депрекейтнут, но и расширения могут не работать (дум 16 оно зупустить неспособно). МолтенВК - хрупкая прослойка между вулканом и низлежащим металом, тебе надо будет смотреть хватит ли тебе её для твоих нужд.

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

Stil ★★★★★
()
Ответ на: комментарий от ComradeDOS

Идея хорошая, но это СЛОЖНО. Сделать абстракцию над контекстными апи - легко, сделать абстракцию над command buffer апи - легко. Скрестить эти две абстрации - СЛОЖНО.

Stil ★★★★★
()

А ещё у каждого АПИ есть свои йичи и недостатки: на метале есть встроенный механизм компиляции compute PSO, который позволяет обходить нехватку регистров в жирных шейдерах; в Vulkan есть Undefined layout для имаджей (а в DX12 его нет, лейаут ваегда должет быть определен - местами это прикольно, местами вымораживает); в вулкане есть передача владения ресурсом между разными очередями - это единственное апи с таким адовым количеством геммороя просто чтобы прочитать картинку на компьют очереди.

Stil ★★★★★
()
Ответ на: комментарий от X512

Отлично, а я ломал голову как работает WebGL на маке (мне мак ос не дала создать ES контекст). Выходит, что я могу просто использовать OpenGL 3.0 и оно будет везде работать. Удобно.

KivApple ★★★★★
() автор топика

Ещё WebGPU. Из перечисленных вариантов я бы выбрал его. Кроме веба сегодня уже ничего не нужно.

OpenGL могут в любой момент выкинуть из яблочных устройств

Не вижу проблем найти реализацию OpenGL поверх Metal. Если используешь OpenGL, значит производительность тебя априори не волнует.

vbr ★★★
()
Ответ на: комментарий от vbr

Не вижу проблем найти реализацию OpenGL поверх Metal. Если используешь OpenGL, значит производительность тебя априори не волнует.

она была и есть от тех же авторов что и moltenvk делали, только за денежку

CrackedMind
()