LINUX.ORG.RU

Пишу визуализатор, посоветуйте составные части

 ,


2

3

Суть такова. Постоянно крутятся кое-какие вычисления. Из продукта делается анимация, причем не декларативная тормозная хрень как в браузере, а как в игровом движке или даже как в видеоплеере - каждые 16ms строим кадр за 1-2ms ждем всинка и выкидываем, чтобы ну вообще ни одного не пропало. Резво реагируем на устройства ввода. Время от времени делаем пост/гет или читаем файлы. Вычисления непростые а целевые тачки хилые, жабу не хочу, хочу сишку.

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


А вопрос в чём? Пока я даже плана действий не увидел, а лишь намерение что-то сделать как-то когда-то.

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

Ну SDL возьми.

anonymous
()

Из продукта делается анимация

2D или 3D? Разница огромна, в случае 2D наваять на чистом SDL2 и не знать проблем с портируемостью, в случае 3D, онтопик не проблема, офтопик не проблема, андроид проблема так как может быть придётся писать/дописывать отдельный рендер для него.

Ввод, интернет и файлы так и быть, напишу депендеси инжекшон под каждую платформу.

Лопнешь писать, возьми SDL2 + SDL2_net

Короче для большую часть переложить на плечи SDL2 и сконцентрироваться на коде который будет поверх.

Нативно собирать нативно, для венды mingw причём удобно именно на linux делать сборку для винды все SDL и прочие зависимости включая mingw-libc компилить прям статически что бы было standalone приложение, на hello world выходит 40 метров если я правильно помню

Под андроид NDK или CrystaX (если хочется gcc,posix и куртизанок)

Ну и всё, но задача размытая, описал бы хоть типа чё поверхносто

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от cvv

А как быть с андрюшкой тогда ему? Там вообще весь затык в не зависимости от тго что он хочет делать именно в визуализации, остальное херня (в плане просто морока, а не проблема)

LINUX-ORG-RU ★★★★★
()

Как мне говорил военком, выйди и закрой дверь, войди и доложи вопрос по форме. Атоничегонепонятна

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

2D или 3D?

2D, но надо наложить шейдеров, иметь несколько вьюпортов и менять форму. Самая упоротая сцена - три ретро-телека на витрине крутят эту самую анимацию, инфографику этакую.

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

Allegro, SDL, GLFW, и еще куча других фреймворков. Из вашего «хочу что-то сделать» непонятно, что вам нужно.

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

надо наложить шейдеров

Тогда отложенный рендеринг, уж как реализовать дело барское, можно глянуть на Corange /src/renderer.c в месте где post1() post2() в каталогах assets_core/shaders/deffered/post1|2.mat посмотреть на шейдеры там постобработка итоговой картинки, но у тебя это будет целевая картинка.

Выкинуть всё ненужно и оставить нужное и всё, вот тебе и рендер (но как это на андрюшу переносить хз я всё никак не доберусь)

иметь несколько вьюпортов

Ну это не сильная проблема, рендерим в одну тектуру 800x600 рендерим в другую текстуру 400x300. выводим первую текстуру не очищая кадр выводим вторую текстуру, между переключениями цели рендера меняем размеры и позиции вьюпорта. Я себе так сделал.

Самая упоротая сцена - три ретро-телека на витрине.

Зато прикольно :D

Ну чё тут посоветовать, SDL2 + SDL2_net + SDL_mixer для абстракции от платформы, linux|windows обычный реднер какой сможешь написать на OpenGL2|3|4 под андрюшку придётся GLES, вот и всё.

Банально взять https://lazyfoo.net/tutorials/SDL/51_SDL_and_modern_opengl/index.php добавить к этому отложенный рендеринг, переключение вьюпортов глянув на что-то готовое и портануть под все нужные платформы, а потом заняться остальным уже.

Может заюзать прям движок какой готовый и маленький, на гитхабах их полно, много тебе не надо так что стоит поискать =)

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

можно глянуть на Corange /src/renderer.c

Ты кроме Corange что-то знаешь, или для тебя helloworld-проектик с гитхаба это вершина OpenGL мастерства?

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

Ты кроме Corange что-то знаешь

Нет

или для тебя helloworld-проектик с гитхаба это вершина OpenGL мастерства?

Да

И мне выгодно его упоминать, может придёт человек на гит и внесёт полезные изменения.

Ну, а то что я его на лоре часто упоминаю… Так ведь ничего выходящего за пределы сложности Corange я на форуме и на то что отвечал не видел.

helloworld-проектик

Я видел человека который принципиально не использовал ничего простого, для всего ему нужны монстры индустрии. Что плохого в том что просто работает? Лан, забей

LINUX-ORG-RU ★★★★★
()

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

Но в общем и целом из тобой описанного, если хочется именно кресты я бы попробовал как ни странно Qt либо sdl.

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

Конечно, особенно бесконечные быстро выполняет.

Deleted
()
Ответ на: комментарий от anonymous

Ну, да :D Godot взрослый проект, а это всего лишь биндинг. Если проблемы будут то точно мешьше если кроссплатформу, сеть, ввод,вывод,графику как ТС хотел самому писать.

Я честно предупредил что я не использовал, но люди же юзают.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от Deleted

SDL2 + Nuklear.

+1

Ой, то есть так:

--------       
|      |       -----
| твой |       |   |
| пост |       | 1 |
|      |       |   |
--------       -----
   |             |
   |-----   -----|
        |   |
        v   v
       -------
       |  +  |
       -------
anonymous
()
Ответ на: комментарий от Deleted

На некоторой синтетике говорят обгоняет, да. Но ПО без цикла обработки событий и меньше чем с одним потоком довольно мало в наши дни.

Пару тройку лет назад на хабре был интересный обзор на эту тему и в общем и целом Jit компиляция иногда позволяет делать интересные оптимизации, которые в случае C придётся делать в ручную с очень не малыми извращениями, и некоторые всё равно не выйдет сделать (типа PGO в рантайме).

pon4ik ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Я честно предупредил что я не использовал, но люди же юзают.

Вот так взял и честно признался, что ты просто ретранслятор чужих мыслей, без своего собственного опыта и мнения.

anonymous
()

OpenGL все перечисленные платформы умеют, вычисления платформонезависимы и так (ну почти)

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

А почему ты решил использовать opengl, а не vulkan?

С чего ты взял, что железо, на которое он ориентируется, поддерживает vulkan? Или что его команда знакома с vulkan'ом, так же хорошо, как с OpenGL? Или ты очередной советник мамкин, начитавшийся агиток и пропаганды?

anonymous
()
Ответ на: комментарий от pon4ik

Пару тройку лет назад на хабре был интересный обзор

гугловцам отсыпь, а то они наигрались в андроиде с жабой - в фуксии ей и не пахнет

anonymous
()
Ответ на: комментарий от Deleted

Люди нарисовавшие на нем треугольник сошли с ума.

Зная этого пациента, я сомневаюсь, что он даже это смог осилить. Хорошо хоть написал «vulkan», а не «vulcan», как некоторые советники любят делать.

anonymous
()
Ответ на: комментарий от Deleted

Люди нарисовавшие на нем треугольник сошли с ума.

Печально.

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

А почему ты решил использовать opengl, а не vulkan?

Что бы работало везде, а не на 3х железках, вулкан на андроиде так это вообще часто если и есть то заглушка тормозная, где вся концепция низкой латентности убита от слова совсем

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

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

Ты уже и специалистом по vulkan'у заделался, или опять бездумно повторяешь чьи-то слова?

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

Повторяю,как тотошка. После 2,5 часового доклада о игровой разработке под всё включая мобилки и проблемах. Если где осталось и найду то скину линк на видос, вроде на vimeo было. Уж не помню точно год назад было, хотя сомневаюсь что кардинально что-то изменилось. Да и что ты пристал, у меня 3 компа, 2 микрокомпа, 3 телефона и приставка была. Всё умеет OpenGL и никто даже не слышал про Vulкан. Тут не надо быть спецом, достаточно головой подумать, хоть и прошло много времени, но железа ещё мало, работать это будет не везде, если будет то не факт что как надо. Если брать вулкан то ты точно должен просто быть уверен что целевая аудитория твоя те кто в течении последних лет купил тот или иной флагман. И ты заранее знаешь и понимаешь что на большинстве оборудования в мире твоя поделка работать не будет. Вулкан можно прикрутить опционально с прицелом на будущее ибо со временем всё изменится конечно, но вот прямо сейчас делать вулкан основным и единственным не всегда оправданно. Да и глупо, ты просто теряешь бOльшую часть рынка и пользователей.

Вулкан (скрипя зубами говорю) это хорошо, но сейчас он совершенно не замена OpenGL. Ибо GL уже работает везде, а Vk нет

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от anonymous

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

Во вторых строках - фуксия этож вроде ядро онли пока что? Я если что не очень слежу, поправь меня. Ну максимум ядро + набор корных утилит для примера - в gnu/linux и */linux так то тоже жабой не особо пахнет.

pon4ik ★★★★★
()

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

// тред не читал

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

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

сначала там викинули дальвик с jit

https://source.android.com/devices/tech/dalvik

а сейчас и вовсе на kotlin перешли

фуксия этож вроде ядро онли пока что?

ядро там zircon

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

А, т.е. там прям Ось уже, прикольно, спасибо за пояснения.

Но по поводу dalvik и kotlin - не очень понял. Dalvik это реализация jvm рантайма насколько я себе это представляю, а kotlin - jvm based язык. Если выкинули dalvik, то какой то jvm рантайм всё равно остался?

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

Если выкинули dalvik, то какой то jvm рантайм всё равно остался?

ART

ART introduces ahead-of-time (AOT) compilation, which can improve app performance.

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

Ага, я сходил таки по ссылке, почитал. Т.е. идея грубо скомпилять dex бинарь в нормальный бинарь под конкретное железо после первого запуска. Хм. Закешировать Jit, нормальная история. Было бы интересно посмотреть бенчи с теми же плюсами на одинаковых задачах, сдаётся мне проигрыш будет минимален на большинстве типовых задач.

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

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

так они JIT выкинули еще в KitKat (больше 5 лет назад), к тому времени как ты потестишь весь UI будет уже на DART :)

anonymous
()

Чем вам не нравится делать декларативную тормозную хрень прямо в браузере?

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

Если только реализовали какуюто часть API OpenGL поверх API OpenGLES, но прям полностью, а бы сам рад такое найти. Да и API переносить мало шейдеры тоже отличаются, и отличаются не снаружи, а изнутри, float точность иная glsl функций некоторых нет. Хотя, можно изначально делать всё на GLES и под PC и под встройку включая мобилки. А ведь так и делают часто вообще не используя полноценный OGL, godot к примеру вообще работает только с GLES, а он игровой двиг, а почему? А потому что гемороя не хотят. Поэтому я с GLES бомблю, достаточно было просто взять и обрезать функционал обычного GL до минимума для встройки и всё, а не городить ещё одно API, тогда можно было бы с крайне минимальными изменениями портировать приложения, а не переписывать их. Хтьфу!

Выдыхаю.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от anonymous

А я думал вебщики страдают…

Мде, гугель сделал себе свой маленький веб, в котором он w3c, ietf и господь бог. Молодцы, чё.

pon4ik ★★★★★
()

Прочел тред и удивился: а почему никто QtWidgets не посоветовал..? Кроссплатформа есть, OpenGL есть, шейдеры есть, C++ есть.

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