簡體   English   中英

是否可以在Web瀏覽器上運行帶有SDL + OpenGL代碼的C ++?

[英]Is it possible to run C++ binded with SDL+OpenGL code on a web browser?

我的客戶希望她的網站有一個呈現3D的應用程序(輕3D的東西,我們只在3D世界中繪制平面正方形),但網絡編程不是我的事。 所以我正在尋找可以從Web瀏覽器運行C ++程序的東西。 但我認為,如果是這種情況,那么客戶端必須首先下載程序,這不是我想要的。 客戶端應該只能在網站上使用此應用程序。

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

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

您在瀏覽器中顯示C ++的唯一穩定選擇是讓用戶下載插件。

否則你可以看一下Javascript解決方案,也許O3D可能就是你想要的東西?

Java applet也可以是一個選項。 可能更容易將代碼轉換為Java,因為它具有與C ++類似的語法,並且Java3D API可能非常有用。 顯然它很容易使用,雖然我自己沒有使用它。 Java3D.org網站是一個很好的起點。

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

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

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

在瀏覽器中唯一可以“運行”的是ActiveX控件。 因此,無論您采用何種方式(用C ++編寫的COM對象,Silverlight應用程序,甚至是Flash程序),它們都必須托管在可下載的ActiveX中。 所以如果要求你不能下載任何東西,那你就不走運了。

現在有人說,Flash幾乎可以在任何地方使用,我相當肯定它可以做你想要的,而且Silverlight雖然還不那么受歡迎,但卻是為這類東西量身定制的,並且很快就獲得了認可。網絡編程世界。 你可以使用它們中的任何一個。

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

一般來說,在瀏覽器中運行SDL很困難。 OpenGL稍微不那么容易,但它也沒有任何問題。 如果您希望它跨瀏覽器和平台工作,那么任何此類本機代碼解決方案都很困難 - 您必須為多個平台(這些都將完全不同)開發NPAPI插件,以及ActiveX控件。 您正在查看四個單獨的項目。

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

如果你決定采用插件路線, FireBreath是一個項目,可以讓你創建一個插件(你可以做渲染),它將編譯為NPAPI插件(firefox,谷歌瀏覽器,蘋果狩獵)和ActiveX控件( IE)

你也可以看看OSAKit 它是一組瀏覽器插件和一組工具,用於將現有的本機可執行文件包裝到一個包可以在瀏覽器中運行的包中。 包裝過程非常簡單,可以在5分鍾內完成。 整個事情看起來有點不專業,但實際上是有效的。 (我不確定安全性,這可能是您的客戶關注的問題。)

Ricardo Cabello已經完成了一個名為three.js的Javascript 3d軟件渲染引擎。 它非常適合您,因為您只需要輕量級圖形,而Javascript缺少一些Flash問題(如焦點竊取,緩慢加載和討厭的上下文菜單)。

不幸的是,似乎沒有任何文件。 有一些例子演示

其中一個演示: 這里

我從沒想過如果沒有Native Client或插件你就可以做到這一點,但最近發現了emscripten,我的思緒被吹了。

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

Emscripten是一個基於LLVM的項目,它將C和C ++編譯為asm.js格式的高度可優化的JavaScript。 這使您可以以接近本機的速度在Web上運行C和C ++,而無需插件。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM