Обновить

Комментарии 35

Ох, если обсуждать данный вопрос более подробно, с погружением, то статья вышла бы еще больше. Пробовал проходить этот квест с треугольником - прошел, по официальной документации. Где-то 1500 строк вышло.
Ваше начинание несомненно полезное, хорошо бы ваш цикл продолжился. Vulkan - замечательная штука, полезно понимать его изнутри.
Однако для чего-то более сложного лучше взять фреймворк, по счастью таковой имеется и зовется VulkanSceneGraph.

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

Понятно, что мой вопрос совсем не в тему в статье по вулкану, но тем не менее: насколько сейчас стоит закладывать новое кросс-платформенное (lin/win/mac) приложение на вулкане, а не, скажем, на webgpu?

смотря какое приложение, какой браузер у пользователя или какой будет, надо ли настраивать или нет, можете ли вы сами воспроизводить примеры WebGPU. Вулкан получается это ближе к стандарту, Vulkan на момент ответа.

документацию по WebGPU всё равно придётся изучать, чтобы реализовать рендер, поэтому даже не знаю.

Я про браузеры не говорил :)

Меня интересует нативный c++

потому что нужно выбрать правильную прослойку, благодаря которой заведётся кросс-платформенная графика. Тот же самый вулкан из коробки на маке не заведётся, нужен как минимум moltenvk

Лично меня не особо интересует что там на маке заведется, а что нет. Вообще не критерий. Apple сознательно, раз за разом, делает "чтобы как не у всех", и их высер в виде Metal API просто очередное тому подтвержение.

Настоящей кросс-платформенности не будет пока существуют те кто сознательно идет на непринятие общих стандартов

Мы вот в прошлом году летом выпустили очередную версию игры, перейдя там с OpenGL на Vulkan. Проблемы начались в том месте, где есть пользователь, покупающий ноут или комп в магазине, с предустановленной виндой. Потому как даже есть железка нормально Vulkan поддерживает, предустановлены такие драйверы, которые не дают этой поддержки. Лечит только установка оригинальных драйверов с сайта NVidia или AMD. И это - на винде, при том что майкрософт вроде как в Khronos Group формально входит....

Чего уж тут о маках говорить

Не очень знаю, зачем мне эта информация. Вы отвечаете в ветке моего вопроса, в котором я явно сказал, что мне нужен lin/win/mac.

А я не очень знаю, зачем в нативных приложениях что-то со словом "web"...

Тот же самый вулкан из коробки на маке не заведётся, нужен как минимум moltenvk

и объясняю причину, почему так. То что вулкан там не заведется - это не проблема вулкана.

Вам нужен - ради бога, используйте что вам нужно. Это к вопросам Vulkan и его перспектив не особо имеет отношения, кмк.

Опять же, ваше незнание не помогает ответить на мой вопрос.

насколько сейчас стоит закладывать новое кросс-платформенное (lin/win/mac) приложение на вулкане, а не, скажем, на webgpu?

Насколько я могу судить, нативно на wegpu нужно писать свой рендер самостоятельно, готовых фреймворков нет. Писать что-то крупное - значит писать свой графический движок. Я бы не рискнул в это ввязываться. Для мелких демок пойдет, чисто как pruff of concept

Да рендер написать дело нехитрое, лишь бы, [censored], одинаково работало на всех платформах...

Да рендер написать дело нехитрое

Если речь идет о том, чтобы загружать и рендерить модели, подготовленные в 3д-редакторе, с поддержкой PBR, работать над организацией графа сцены на больших локациях - я бы не сказал что написать рендер на голом, пусть и кроссплатформенном API так уж просто и быстро

Вы зря так сильно редактируете комментарии. Кто-то (я) их читает быстро. Я чуть не прошёл мимо новой версии, а ведь она интересная... Я лично на связке win/lin с opengl устал тараканов ловить, вечно что-то не так рендерится :(

Я лично на связке win/lin с opengl устал тараканов ловить, вечно что-то не так рендерится :(

C Vulkan я такого не наблюдал. С переходом на него у моего проекта на lin/win графика стала меньшей из проблем

(ниже это не первая попытка надо понимать перед этим были долгое время обучения и мук на С++/туториалов/обзоров/начинал с обзоров синк матрикса и базы. Далее были пробы и ошибки, целые сэты прям я даже не надеялся. Тоесть тут порог входа на уровне знать как рисуем, как должно быть видение гипотезы самой и возможность изменить проверить код, чтобы он работал)кароче у меня на Расте с оркестровкой и всеми потерями на тот момент по времени завёлся только Opengl4.6(пакет sdl2 и gl) действий минимум Воксели проще были на тот момент к пониманию, проще инкапсулировать 1 чанк на многопоточку, с последующей доводкой - оптимизацией(glMultiDrawElementsIndirect/gl_DrawID/gl_InstanceID/glTextureArray - вообще красивая штука по оптимизации), на С++ так же красиво теперь получается с деревом, но с многопоточкой смотреть надо(опять смотреть, если что я просто вернусь на Раст уже есть такая опция). А Вулкан много телоджвижений простите на 1 треугольник, чтобы гипотезу проверить, тем более если брать в расчет Bevy(на расте он тоже есть), или какой-либо фреймворк, но я 1 проект даже смотрел на С на сдл3гпу на Вулкане. Даже после того как посмотрел его меня для пет-проекта не убедило это, потомучто у Вулкана такой конвеер неудобный не такой как у Opengl, я поэтому точно не знаю, что советовать сам я пока проверяю гипотезы на Opengl4.6 стараясь его по максимуму gpu-based использовать, смотря где можно многопоточкой на процессоре разгружать - у меня, как-то так вышло, как делают большие студии самому интересно

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

Попробуйте на маке завести opengl 4.6...

когда перейду на мак - не знаю когда, первым делом я всё технически щупать начну, посмотрю, щас пока да, есть пробел, не имел дело физически с маком

Эпл, к сожалению, выпендрились и ничего выше opengl то ли 1.2, то ли 2, не поддерживают. Типа, юзайте их поделение metal...

Тут проблема в том, что MacOS не поддерживает ни чего новее OpenGL 4.1 core (да и 4.1 помечена как deprecated то есть в любой момент яблочники могут выкинуть и эту поддержку). Писать графику под Мак с точки зрения Купертино - только на их фирменном Metal API и ни чего другого официально не дозволяется.

Попробуйте отказаться от Маков

Отличное предложение для коммерческой разработки :)

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

Ну и нужно понимать обьём целевой аудитории

Key macOS Steam Statistics (2025–2026)

  • Market Share: macOS users make up approximately 0.97% to 1.91% of total Steam users.

и для сравнения

SteamOS & Linux Usage Statistics (Jan 2026)

  • Total Linux Share: ~3.05% - 3.19% of all Steam users.

Ну то есть если речь идёт об играх, то даже владельцев Steam Deck примерно в два-три раза больше чем пользователей MacBook Pro (самый распространённый девайс на MacOS в Steam).

Для мобилок картина другая, там ~30% за iOS, но её в изначальной формуле не было :)

В моей области (не игры) отказаться от маков не вариант вообще. Клиентов мало, и каждый на вес золота :)

Потому я и написал про целевую аудиторию, а игры были просто примером.

кросс-платформенное (lin/win/mac) 

Забудьте вы о подобных идеях пока в этой формуле есть яблочная продукция. Они сознательно блокируют всё кроссплатформенное, максимально привязывая разработчиков к своей платформе.

Я в курсе, но с этим придётся жить. Поэтому и вопросы. В принципе, вулкан через moltenvk на яблоках бегает.

Спасибо, милый человек, ради тебя я теперь тут зарегистрированный пользователь!:)

А что думаешь о библиотеках vkbootstrap и vulkan memory allocation?

Здравствуйте! Да. Я думаю, на самом деле об этом. Более того, после нескольких таких статей, я мечтаю создать какой-нибудь проект (a.k.a. ещё один движок), где бы были интегрированы различные технологии

Большое спасибо за такие искренние слова

Вулкан очень сильно заточен на понимание того как должно быть многопоточно, если сразу переходить на Вулкан минуя многопоток, то придётся разобраться как устроена многопоточная обработка(в литуратурном контексте графика, тоесть придётся понять как многопотоково организовать отрисовку) где-то, в фундаменте этого подхода лежит целая архитектура владения и обработки, через это придётся пройти если пропустить это

Вулкан очень сильно заточен на понимание того как должно быть многопоточно

А что еще можно ожидать от современного API в эпоху многоядерных процессоров и полностью программируемых GPU? OpenGL - можно считать что он уже мертв в этом отношении

согласен, я этот инсайт почерпнул на Opengl4.6 DSA, ssbo, в Вулкане всё по другому, но у меня пока нет мотивации переходить на Вулкан, может позже чтобы сразу в Accel Structure Hardware, до этого момента я поставил цель, покрыть тестами всё до этого ускорения, чтобы не топтаться на месте, а потом понимать что я делаю, хотя бы от гл многопотокового

наверно зависит от карточки, у меня карточка не тянет вроде ускорение железячное, я на java вроде смотрел примеры, там вроде поддержка именно нужна

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации