2009-08-25 28 views
4

我的客戶希望她的網站有一個渲染3D的應用程序(光線3D的東西,我們只在3D世界中繪製扁方形),但網絡編程不是我的事。所以我正在尋找可以從Web瀏覽器運行C++程序的東西。但我認爲,如果是這種情況,那麼客戶端必須首先下載該程序,這不是我想要的。客戶端只能在網站上使用此應用程序。可以在Web瀏覽器上運行C++綁定的SDL + OpenGL代碼嗎?

我遇到Google Native Client,聲稱它可以在Web應用程序中運行x86本機代碼。我還沒有決定是否值得,我不知道這是否是我想要的,所以我決定詢問有經驗的人。

如果我想要這樣的東西,是我上面說過的可能嗎?或者我完全需要像Flex這樣的其他語言,因爲它不值得麻煩?或者Google Native Client適合做這樣的事情?

+0

你可以在C++中編寫瀏覽器插件? – Goz 2009-08-25 10:04:51

+1

現在看來possibele: https://developers.google.com/native-client/community/porting/SDLgames – mlvljr 2012-01-19 16:33:58

回答

1

不,NativeClient是而不是你想要什麼。它不會讓你運行SDL + OpenGL--它可能是C++代碼,但它在沙箱中運行。

在瀏覽器中運行SDL通常很困難。 OpenGL有點不那麼重要,但它也不是Cakewalk。如果你希望它在各種瀏覽器和平臺上工作,任何這樣的本地代碼解決方案都很困難 - 你必須爲多種平臺開發NPAPI插件(這些插件將完全不同)以及ActiveX控件。您正在查看四個獨立的項目。

幾乎可以肯定的是,這裏的正確答案是以某種形式使用Flash。

3

在瀏覽器中顯示C++的唯一穩定賭注是讓用戶下載一個插件。

否則,你可以看看一個JavaScript解決方案,也許O3D可能是你在找什麼?

+0

O3D看起來很誘人。讓我試試看。 – Karl 2009-08-25 14:43:14

1

唯一可以在瀏覽器中「運行」的是ActiveX控件。所以無論你走什麼路(用C++編寫的COM對象,Silverlight應用程序,甚至是Flash程序),它們都必須託管在可下載的ActiveX中。所以如果要求是你不能下載任何東西,那你的運氣不好。

現在說到這裏,Flash在世界各地都非常普遍,我相當肯定它可以做你想做的事情,而Silverlight雖然還不太受歡迎,但卻是爲這類事情量身定製的,在網絡編程領域獲得認可。你可以放棄使用它們中的任何一個。

+0

真的嗎?我可以在Firefox和Google Chrome中運行activeX嗎?導致IE肯定不是瀏覽器,更像是專用的病毒傳播平臺。 – Tim 2009-08-26 20:47:20

+0

Firefox,Chrome等。支持NPAPI框架。 Firefox(以及其他基於Gecko的瀏覽器)支持基於XPCOM的插件。只有IE支持ActiveX。 – greyfade 2009-08-31 01:41:21

+0

但你明白了,你仍然需要下載SOMETHING,不管你怎麼稱呼它。 – Blindy 2009-08-31 10:13:45

2

Java applet也可能是一個選項。將代碼轉換爲Java可能更容易,因爲它具有與C++相似的語法,並且Java3D API可能非常有用。顯然這很容易使用,儘管我自己並沒有使用它。 Java3D.org網站是一個很好的開始。

大多數人已經安裝了Java和Flash,因此兩者都相當安全。

+0

Java Applet?我不確定。我有一種感覺,現在我不再看到Java Applet。我看到Flash,Flex等等。 Java小程序是否仍在? – Karl 2009-08-25 14:42:15

+0

是的,取決於上下文。處理與外觀。如果你只是想要一個閃亮的按鈕或媒體播放器,你可能不會使用Java。如果你想要更強大的代碼,如3D模擬或分形計算器,你可能不會使用Flash。 Java最近的一件事是WebStart,它基本上允許Java程序通過網絡安裝到主機上(儘管這可能超出了你的需求)。最近的兩個Java程序是Geogebra(幾何/繪圖,流行教育工具)和Centra(網絡會議,演示和教室)。 – 2009-08-26 11:10:22

2

谷歌的NativeClient框架支持你想要做的。這是一個用戶必須安裝的插件,但它運行的是一個沙盒C++應用程序,就像它是一個瀏覽器插件一樣。這似乎正是你想要的。

正如其他人指出的,您的其他選項是Silverlight applet,Flash applet,Java applet,HTML5 Canvas標記或實際插件(適用於IE的ActiveX,適用於所有其他瀏覽器的NPAPI)。

0

如果你決定去插件路線,FireBreath是一個項目,可以讓你創建一個插件(你可以渲染),它將被編譯爲NPAPI插件(firefox,google chrome,apple safari)和一個ActiveX控件(IE)

0

你也可以看看OSAKit。它是一組瀏覽器插件,還有一套工具,可將現有的本機可執行文件打包成插件可在瀏覽器中運行的軟件包。包裝過程非常簡單,可以在5分鐘內完成。整個事情看起來有點不專業,但實際上有效。 (雖然我不確定安全性,但這可能會成爲您客戶的擔憂。)

0

Ricardo Cabello完成了Javascript 3D軟件渲染引擎three.js。這非常適合你,因爲你只需要輕量級的圖形,並且Javascript沒有一些Flash問題(例如焦點竊取,緩慢加載和令人討厭的上下文菜單)。

不幸的是,似乎沒有任何文檔。雖然有examples和​​。

其中一個演示:here

0

我從來沒有想過,你可以做到這一點沒有本機客戶端或插件下去,但最近發現emscripten,我的心被炸燬。

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

Emscripten是基於LLVM項目,編譯C和C++成高度優化的中的JavaScript asm.js格式。這使您可以以近乎原生的速度在Web上運行C和C++,而無需插件。

Emscripten將OpenGL轉換爲WebGL,並允許您直接使用熟悉的API,如SDL或HTML5。

相關問題