4

我意识到上述问题相当广泛,因此我将其缩小。我有一个简单的 opengl c++ 游戏引擎,它位于静态库中(可以转换为动态库)。

我一直在想办法让它在网络上运行。据我所知,我可以使用 ActiveX 或 Google NaCl 在浏览器中运行 c++ 代码。但这些技术似乎不容易跨平台?或者,也许我误解了。

我见过的另一个选择是将引擎转换为 javascript 和 WebGL 并在 HTML5 画布中运行。这会比 c++ 慢吗?不过,这将是非常跨平台的。

您认为最好的选择是什么,或者更好的是我错过了其他选择吗?

编辑:类似于统一网络播放器的自定义插件怎么样?

4

3 回答 3

6

@kripken 创建了一个仍在开发中的库。它需要 LLVM 位码并转换为 Javascript。

您可以在此处查看项目页面,其中包含工作示例。 https://github.com/kripken/emscripten/

于 2012-07-27T07:54:49.190 回答
3

我强烈建议移植到 NaCl。

优点:

  1. 性能:您可以使用 CPU 的全部功能来渲染您的游戏。如果您的游戏使用良好的 3D 图形或物理效果,即使在旧系统配置上,您也可以让它看起来很流畅。NaCl 的性能与 Native OS 应用程序相当,当我将相同的游戏与 Win32 版本进行比较时,它仅损失近 5% 到 10% 的 FPS。
  2. 有很多已经移植的示例,NaCl 的游戏可以帮助您轻松完成。
  3. 它已经是跨平台的了。Chrome 可在 Windows、Linux、Mac OSX 上运行。

缺点:

  1. 可能需要一周左右的时间才能移植。您必须移植到 OpenGL ES 2.0(但是,它应该与任何基于浏览器的方法相同,尤其是 HTML5)
  2. 仅在 Chrome 上运行。
于 2012-07-27T10:20:53.830 回答
1

如果你想在浏览器中移植一些东西,那么它必须依赖 Javascript(可能还有 WebGL,尽管 IE 不支持)。

ActiveX 和 NaCL 不能以任何方式、形状或形式进行移植。

我不能说哪个更容易,但是你可以选择用 Javascript 重写你的游戏,或者使用像Emscripten这样的工具将你的 C++ 编译为 JavaScript。

请注意,如果您使用后者,它仍然不是灵丹妙药。您可能必须对代码进行大量更改(例如,因为 C++ 游戏中使用的库和 API 在浏览器上不可用)

于 2012-07-27T08:02:16.083 回答