Портирование моего приложения C++ для запуска в браузере
Есть ли простой способ перенести приложение C++ OpenGL в браузер? Он уже портирован на ПК, Mac и iOS. Если есть какой-то относительно простой способ, будет ли он переносимым между компьютерными браузерами? Конечно, мне бы пришлось использовать разные двоичные файлы для разных платформ. Я помню, что слышал кое-что о какой-то изолированной среде для Chrome некоторое время назад, но это исключило бы другие браузеры. Как они (id?) Сделали с Quake в браузере?
4 ответа
Попробуйте Google Native Client
или же NaCl
, если вы хотите ленивый порт.
Но если вы хотите сделать реальный порт - обратитесь к этим двум примерам:
- серия блогов о портировании существующей игры на C++ на html5 (спонсировано Opera)
- небольшая статья о портировании существующей игры Objective-C на html5 (спонсировано Microsoft).
- печальный пример переноса популярной защищенной авторским правом игры с C на JavaScript (спонсор Mozilla, с дополнительной помощью Zenimax)
Если вы спрашивали о QuakeLive - это пользовательский плагин, разработанный Id Software. Подобная функциональность может быть достигнута с помощью плагинов Flash или Unity.
Если вы уже ориентируетесь на ES 2.0 для iOS, ваши шейдеры должны работать как есть с WebGL. JavaScript, ахой!
id Software использует гигантский плагин для Quake Live.
Вы можете использовать Mandreel, если вы хотите наименьшее количество работы. Другой вариант - Emscripten, но он конвертирует только ваш C++, он не предоставляет все API, как это делает Mandreel.
Есть ли простой способ перенести приложение C++ OpenGL в браузер? Он уже портирован на ПК, Mac и iOS. Если есть какой-то относительно простой способ, будет ли он переносимым между компьютерными браузерами?
Вы можете попробовать перекомпилировать его в JavaScript, это то, что выполняют браузеры. Если вы не ожидаете, что пользователь установит какой-либо плагин для браузера, вы не сможете дать ему собственный код. Конечно, в среде JavaScript многие вещи, к которым вы привыкли из собственных исполняемых файлов, не работают. Например, вы больше не можете получить доступ к файловой системе. Вы должны использовать хранилище DOM, файлы cookie, загружать / выгружать ресурсы с сервера.