|
-12 / 1 / 0
Регистрация: 11.02.2017
Сообщений: 246
|
|
Vulkan Java13.07.2020, 17:24. Показов 6158. Ответов 1
Дайте пож-ста ссылку на примеры работы с Vulkan на Java. В двух словах, это сильно сложнее по сравнению с OpenGL?
0
|
|
| 13.07.2020, 17:24 | |
|
Ответы с готовыми решениями:
1
Перевод с c++ на Java (работа с Vulkan) Exception in thread "main" java.lang.IllegalArgumentException: illegal component position at java.desktop/java.awt.Cont Какую версию Java поддерживает .Net Java# И какую VS6.0 Java++ ? |
|
Модератор
|
|
| 13.07.2020, 21:33 | |
Сообщение было отмечено EugeneV как решение
Решение
Ссылки с уроками (но только на англ, на русском есть только книга но в которой минимум кода, одна теория) и примерами кода дам позже (сейчас не на компе, а ссылки на компе), но ссылки будут на java. Хотя вулкан как и джиэль не зависят от языка на котором пишутся. Правда вулкан в этом плане более специфичен, так как многое делается через заполнение структур а в джаве надо заполнять классы выделяемые вне кучи и руками их чистить.
Теперь про сложность. Вулкан изначально задумывался как развитие opengl и вроде даже мог стать opengl next, но его выделили в отдельный продукт. На opengl последних версий (4.5+) можно писать в стиле вулкана, а в 4.6 версии даже добавили поддержку spir-v шейдеров от вулкана. Если opengl принять за c++/java то вулкан будет на этом фоне чемто наподобие ассемблера, только графического. Почти все то что делает за программиста в opengl драйвер (включая синхронизацию, так как gpu по своей природе асинхронны) в вулкане надо делать самому. Из этого выходит вся сложность вулкана. Если на шейдерном opengl нарисовать треугольник грубо говоря можно за 150-200 строк кода включая шейдеры, то на вулкане это займет в лучшем случае минимум 1500 строк кода (да, только тупо треугольник карл). Я активно пишу на opengl 4.5-4.6 в вулкан стиле (или близком к нему) и изучал поверхностно вулкан и знаю о чем пишу. Если opengl больше состоит из глобальных состояний и только в 4.5 стал ближе к ооп, то вулкан же чисто ооп, то есть у него все состоит из объектов. Советую изучить opengl последних версий для начала, активно использовать такие вещи как dsa (direct state acess), sso (separate shader object), ubo (uniform buffer object), ssbo (shader storage buffer object), graphics pipeline, immutable textures, immutable buffer и все связанное с этим (это часть так называемого вулкан стайл программирования на opengl которое более производительное чем простое), а так же не использовать юниформы в шейдерах (их в вулкане просто нету) а вместо них ubo, использовать debug callback и создавать буферы/текстуры из неизменяемых (immutable) буферов использую dsa, после этого код программы обновится процентов на 70 точно. Теперь пара слов (далеко не все) о том что надо сделать чтобы нарисовать хоть что то на вулкане: создать экземпляр вулкана, получить список физических устройств (видео карт), найти среди них поддерживающие вулкан, создать логическое устройство, создать и активировать список слоев и расширений, создать пул коммандных буферов, по мере надобности дергать из этого пула командные буферы (где будут выполнятся все команды вулкана), создать графический конвеер с шейдерами, создать поверхность для рисования, создать swapchain, создать буферы/текстуры, создать descriptor sets, создать систему синхронизации, создать кучу логики для пересоздания и удаления частей и еще куча всего… Добавлено через 11 минут Это еще не говоря о том что вулкан имеет меньшую поддержку на уровне железа. Тут даже с opengl версии 4.6 которая вышла в 2014 году (точно не помню но вроде тот год) и больше не обновлялся и то не у всех работает в отличии от 3.3 версии. А про вулкан и говорить нечего, для него нужна карта не старее gtx660, про амд и ноутбуки не скажу, но с ними дела похуже имхо так как у всех довольно старое и без поддержки вулкана обычно. Теперь пару слов про шейдеры, для вулкана можно писать и компилировать шейдеры в бинарный spir-v на любом шейдерном языке, включая glsl и hlsl. Но если и использовать glsl от opengl то так просто использовать привычный код не выйдет, у вулкана свои изменения, некоторые вещи вырезаны, некоторые добавлены. Из вырезанного например нельзя использовать subroutine и location у юниформ, вместо юниформ ubo. Так же стоит руками явно прописывать location и binding у входов/выходов/юниформ в шейдерах. Добавлено через 1 час 54 минуты Теперь ссылки... Начну с уроков Первое, аналог learnopengl.com https://vulkan-tutorial.com/ тоже англ тоже плюсовый, по нему пытался изучать, ссылка на плюсовый гит https://github.com/Overv/VulkanTutorial и джава гит https://github.com/Naitsirc98/Vulkan-Tutorial-Java Второе аналог книги по opengl на java (тоже англ) https://ahbejarano.gitbook.io/lwjglgamedev/ от того же автора и тоже бесплатным но для вулкана (в процессе написания еще и только в виде исходников на гите) https://github.com/lwjglgamedev/vulkanbook Третье, англ статья от нвидии по написанию на opengl в стиле like vulkan https://developer.nvidia.com/opengl-vulkan Четвертое, книги с теорией (почти без кода, а если и есть то псевдокод) англ оригинал https://www.amazon.com/Vulkan-... 0134464540 и русская версия https://www.ozon.ru/context/detail/id/141553157/ Пятое ссылки на оф спецификации https://www.khronos.org/registry/vulkan/ Шестое ссылка на vulkan sdk https://vulkan.lunarg.com/#new_tab содержит плюсовые примеры, а так же компилятор шейдеров из cmd, так же необходимо установить для использования debug layers, вот отдельно компилятор шейдеров https://github.com/KhronosGroup/glslang Седьмое вот еще найденные уроки на русском, но плюсовые https://triplepointfive.github... ial50.html не смотрел, но зато на русском И пару слов, плюсовые уроки имхо полезней, так как ты переписываешь код на свой язык а не тупо копипастишь код не разобравшись в нем
1
|
|
| 13.07.2020, 21:33 | |
|
Помогаю со студенческими работами здесь
2
DirectX vs Vulkan Google Chrome+vulkan Сменит ли Vulkan OpenGL? Реклама Vulkan и баннеры на youtube Khronos Group API Vulkan Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию.
2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO
Апнулись до NET10.
Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта
так и в интерактивном режиме. из сложностей - чисто функциональный подход.
Решил. . .
|
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2.
Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники".
В. . .
|
|
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии.
. . .
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|