Как транслировать визуализированную сцену OpenGL из облака на удаленные клиенты - PullRequest
0 голосов
/ 01 апреля 2020

Итак, у меня есть настольное приложение, использующее OpenGL для рендеринга больших наборов данных в 3D. Я хочу переместить его в облако и использовать рендеринг на стороне сервера для потоковой передачи визуализированных изображений удаленным клиентам (JS, et c.). Из того, что я понимаю, WebRT C - лучший подход для этого. Однако это сложно и дорого реализовать, и в основном предназначено для приложений видеоконференций. Существуют ли какие-либо фреймворки / с открытым исходным кодом, которые больше подходят для потоковой передачи 3D-графики. Является ли GameStream от Nvidia подходящей технологией для изучения или она предназначена для игр? Любые другие идеи и подходы?

1 Ответ

0 голосов
/ 02 апреля 2020

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

Если вы выполняете рендеринг на стороне сервера, большое преимущество заключается в том, что вы управляйте графическим процессором, доступной памятью, версией ОС и драйвера и т. д. c, поэтому проблемы с кроссплатформенностью или версией ОС практически исчезнут.

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

И у вас задержка в сети при каждом нажатии клавиши, или щелчке мыши, или движении мыши.

А если десятки? сотни? тысячи? из людей, которые хотят использовать ваше приложение одновременно, у вас должно быть достаточно серверной ЦП / ГП для обработки такого количества пользователей.

Так что да, это сложно и дорого реализовать, независимо от того, что вы выберете. Помимо WebRT C, вы также можете взглянуть на программное обеспечение для разделения экрана, такое как VN C. Потоковая трансляция игр Nvidia может быть более подходящей для изучения технологией, поскольку между 3D-играми и 3D-визуализацией очень много общего, но не ожидайте, что это будет волшебная c пуля.

Вы смотрели на WebGL? Это слегка урезанная EGL-версия OpenGL для JavaScript. Если вы не интенсивно используете расширенные возможности OpenGL 4, большая часть кода OpenGL C / C ++ без особых затруднений преобразуется в JavaScript и WebGL. И почти каждый веб-браузер на pl anet работает с WebGL, даже если (как Apple) производитель платформы не рекомендует обычный OpenGL. Большим преимуществом является то, что весь рендеринг и интерактивность выполняются на клиенте, поэтому задержка не является проблемой, и вы не платите за процессор / графический процессор, если много людей хотят запустить его одновременно.

Надеюсь, это поможет.

...