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 ★★★★★
()

Почему бы не использовать еще один уровень абстракции, который, внезапно, позволяет абстрагироваться от используемого на конкретной платформе API?

ComradeDOS
()

используй ogl, еще тыщу лет будут поддерживать, потому что много софта на нем

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

Почему бы не использовать еще один уровень абстракции

И правда. А то что-то маловато тормозилова.

alex1101
()

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

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

Я недавно видел графическую библиотеку для 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 ★★★★★
()

Есть реализания OpenGL от Google поверх разных API под названием ANGLE. Можно использовать даже если Apple уберёт нативную поддержку OpenGL.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от X512

только ANGLE реализует не OpenGL, а OpenGL ES, что достаточно сильно отличаются, и немеряное количество багов и воркэраундов.

CrackedMind
()

Vulkan. Яблочники пусть сами валяются в своем металлическом болоте. На консолях и вебе - жрем что дают.

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

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

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

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

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

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

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

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

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

CrackedMind
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.