#cpp #веб_программирование
Объясню суть проблемы: есть десктопное графическое приложение ,написанное на с++, появилась срочная необходимость доступа к нему через web браузер, а именно чтобы сервер, при обращении к нему, поднимал на своей стороне эту программу и достаточно того чтобы он каким-либо способом передавал на сторону клиента вывод самого приложения. Платформа: windows; графический API: OpenGL | GLFW; Была мысль того, чтобы переписать часть кода, отвечающую за отрисовку, так чтобы картинка непосредственно преобразовывалась в поток байт, который затем и будет пересылаться клиенту, но способ весьма время-затратный, существуют ли другие возможности для реализации этой "фичи"? (Времени переписать код на другой язык попросту нет)
Ответы
Ответ 1
Поднимаете VNC сервер, потом поднимаете сервер noVNC, который транслирует протокол VNC в HTML5. Собственно, на этом вопрос "показать десктопное приложение на вебе" заканчивается. Дальше начинаются частные вопросы - вопрос с качеством и отзывчивостью картинки, вопрос с авторизацией пользователей, вопрос с запуском этого дела на каком-то сервере. Первое решается использованием видеокарты с аппаратной поддержкой сжатия видео - и венда, и линукс позволяют рисовать из OpenGL прямо в буфер компрессора на видеокарте, и снимать с видеокарты уже поток сжатого видео. Второе зависит от политики предоставляемого сервиса. Третий вопрос таки уже сильно зависит от используемой ОС и серверной платформы.Ответ 2
Это конечно не панацея, однако, Взгляните на emscripten Цитата из википедии Целью развития проекта Emscripten является создание инструмента, который позволил бы выполнять в Интернете код независимо от языка программирования, на котором этот код написан. Emscripten позволяет осуществить компиляцию байткода LLVM в код на языке JavaScript, который может быть выполнен внутри веб-браузера. Байткод LLVM может быть сгенерирован с исходных текстов C / C ++ с помощью компиляторов llvm-gcc и clang, а также из кода на другом языке программирования, для которого существует LLVM-фронтенд. Emscripten поддерживает трансляцию вывода библиотеки SDL через canvas, а также оказывает поддержку OpenGL через WebGL. Вот примеры, доступные в сети: DOOM3 Broadway.js - H264 кодек https://homepages.loria.fr/BLevy/GEOGRAM/vorpaview.html https://homepages.loria.fr/BLevy/GEOGRAM/geogram_demo_Delaunay2d.html
Комментариев нет:
Отправить комментарий