Можно ли запустить C ++, связанный с кодом SDL + OpenGL, в веб-браузере? - PullRequest
4 голосов
/ 25 августа 2009

Мой клиент хочет, чтобы на ее веб-сайте было приложение, которое отображает 3D (легкие 3D-объекты, мы рисуем только плоские квадраты в 3D-мире), но веб-программирование - не мое Поэтому я ищу что-то, что может запустить программу на C ++ из веб-браузера. Но я думаю, что если это так, то клиентская сторона должна сначала загрузить программу, а это не то, чего я хочу. Клиент должен иметь возможность использовать это приложение только на веб-сайте.

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

Если я хочу что-то подобное, возможно ли то, что я сказал выше? Или мне совершенно необходимы другие языки, такие как Flex, потому что это не стоит проблем? Или Google Native Client подходит для таких действий?

Ответы [ 9 ]

3 голосов
/ 25 августа 2009

Ваша единственная стабильная ставка для отображения C ++ в браузере - заставить пользователя загрузить плагин.

В противном случае вы могли бы вместо этого взглянуть на решение Javascript, возможно O3D может быть тем, что вы ищете?

2 голосов
/ 31 августа 2009

Google NativeClient Framework поддерживает то, что вы хотите сделать. Это плагин, который пользователи должны будут установить, но он запускает изолированное приложение C ++, как если бы это был плагин для браузера. Кажется, это именно то, что вы ищете.

Как уже отмечали другие, вы можете использовать апплет Silverlight, апплет Flash, апплет Java, тег HTML5 Canvas или реальный плагин (ActiveX для IE, NPAPI для всех других браузеров).

2 голосов
/ 25 августа 2009

Апплет Java также может быть вариантом. Может быть проще конвертировать ваш код в Java, поскольку он имеет синтаксис, аналогичный C ++, и API Java3D может оказаться очень полезным. Видимо, его довольно легко использовать, хотя я сам с ним не работал. Сайт Java3D.org - хорошее место для начала.

У большинства людей уже установлены Java и Flash, поэтому оба достаточно безопасны.

1 голос
/ 17 октября 2009

Нет, NativeClient не , что вы хотите. Он не позволит вам запустить SDL + OpenGL - это может быть код C ++, но он запускается в песочнице.

Запуск SDL в браузере в целом затруднен. OpenGL несколько менее, но это не легкая прогулка. Любое такое решение для нативного кода является сложным, если вы хотите, чтобы оно работало в разных браузерах и на разных платформах - вам придется разрабатывать плагины NPAPI для нескольких платформ (которые все будут довольно разными), а также элемент управления ActiveX. Вы смотрите на четыре отдельных проекта.

Почти наверняка правильный ответ здесь - использовать Flash в той или иной форме.

1 голос
/ 25 августа 2009

Единственное, что может «запускаться» внутри браузера - это элемент управления ActiveX. Поэтому независимо от того, каким путем вы идете (COM-объект, написанный на C ++, приложение Silverlight, даже программа Flash), все они должны быть размещены внутри загружаемого ActiveX. Поэтому, если требуется, чтобы вы ничего не загружали, вам не повезло.

Теперь, как говорится, Flash почти везде доступен, и я вполне уверен, что он может делать то, что вы хотите, и Silverlight, хотя и не настолько популярный, специально создан для такого рода вещей и быстро набирает принятие в мире веб-программирования. Вы могли бы избежать использования любого из них.

0 голосов
/ 31 марта 2017

Я никогда не думал, что вы могли бы сделать это без Native Client или плагинов, но недавно обнаружил emscripten, и мой ум был взорван.

http://kripken.github.io/emscripten-site/

Emscripten - это проект на основе LLVM, который компилирует C и C ++ в высокооптимизируемый JavaScript в формате asm.js. Это позволяет вам запускать C и C ++ в сети с практически естественной скоростью без плагинов.

Emscripten преобразует OpenGL в WebGL и позволяет напрямую использовать знакомые API, такие как SDL или HTML5.

0 голосов
/ 01 июня 2010

Рикардо Кабелло создал движок программного рендеринга Javascript 3d под названием three.js . Это хорошо для вас, потому что вам нужна только легкая графика, а в Javascript отсутствуют некоторые проблемы с Flash (например, угон фокуса, медленная загрузка и неприятные контекстные меню).

К сожалению, нет никакой документации. Есть примеров и демо хотя.

Одна из демонстраций: здесь

0 голосов
/ 01 июня 2010

Вы также можете взглянуть на OSAKit . Это набор плагинов для браузера плюс набор инструментов для упаковки существующего собственного исполняемого файла в пакет, который плагин может запускать внутри браузера. Процесс упаковки действительно прост, может быть сделан за 5 минут. Все это выглядит немного непрофессионально, но на самом деле работает. (Хотя я не уверен в безопасности, и это может быть проблемой для вашего клиента.)

0 голосов
/ 20 декабря 2009

Если вы решите пойти по плагину, FireBreath - это проект, который позволяет вам создать плагин (из которого вы могли бы делать рендеринг), который скомпилируется как плагин NPAPI (Firefox, Google Chrome , Apple Safari) и элемент управления ActiveX (IE)

...