2009-08-25 150 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。

相关问题