使用OpenGL在Web中的最佳方法是什么?

11

我在我的微积分2课程中使用C++/OpenGL(使用Dev-C++编译器)编写了一个程序。老师喜欢这个程序,并要求我将其放到网上,以便不必下载.exe文件,只需在Web浏览器上运行它。有点像Java小程序在浏览器上运行。

问题是:

如果可能的话,如何在Web浏览器中显示C++/OpenGL程序? 我考虑转向JOGL,它是OpenGL的Java解释,但我更愿意使用C++,因为我更熟悉它。

另外,还有其他更好、更容易的3D Web API可以考虑吗?


有一个叫做"Unity Web Player"的东西。我不知道它的底层是什么,最近我只是在里面无意中发现了一个3D游戏。 - Eugene
如果你已经了解了C ++,那么JOGL非常易于接近。我认为使用JOGL不会有任何问题。 - Ricket
7个回答

6
最近WebGL非常活跃。它是Javascript与本地OpenGL ES 2.0实现的绑定,作为HTML5画布元素的扩展而设计。
它受到Firefox、Safari、Chrome和Opera夜间构建的支持。
看看这些教程,基于著名的NeHe OpenGL教程。
基于WebGL的几个项目正在出现,其中最值得注意的是场景图API。
  • 来自独立团队:SceneJS, GLGE, SpiderGL
  • 来自Google:O3D插件背后的团队正在尝试为该项目实现纯WebGL后端(源代码),以便不需要任何插件。
  • 来自W3C/Web3D:正在进行讨论,将X3D作为HTML5 DOM树的一部分,类似于HTML4中的SVG。 X3DOM 项目去年诞生以支持这个想法。现在它使用WebGL作为其渲染后端,并且自2010年3月以来已经是1.0版本。

我几乎可以肯定,WebGL是未来的发展方向。Mozilla/Google/Apple/Opera正在推广它,如果这项技术得到了验证并且有足够的客户和开发者需求,或许微软也会在IE上实现它(希望不会出现"WebDX"!)。


5
据我所知,只有三个选项:
1. Java。它包含了整个OpenGL堆栈。
2. Google的原生客户端(NaCL),本质上是一个插件,可以让您运行可执行的x86代码。只需编译并从HTML中调用即可。高度实验性,没有人会已经安装它。不确定它是否给您访问OpenGL库的权限。
3. Canvas:3D。另一个非常实验性的项目。这是一个从JavaScript访问的加速3D API。据我所知,它只在Firefox的实验版本中存在。
如果一定要选择,我会选择Java。

如果主要是矢量作品(没有很多纹理和光照/阴影),你可以通过将3D中的矢量投影到2D上,在SVG上实现它。在这种情况下,您可以使用SVGWeb实现跨浏览器兼容性,它是一个简单的JavaScript库,允许您透明地使用浏览器的本机SVG支持或基于Flash的SVG渲染器。


是的,我也这么想。关于这个问题并没有太多选择。但还是谢谢你的回答。 - Y_Y

2

你真的有时间重写它吗?我认为学生应该太忙于完成非必要的作业。

但如果你真的想做,也许将其预览为Flash动画是最简单的方法。然后只需要这样做,如果人们感兴趣,你可以提供真正应用程序的下载链接。


2

1
另一种解决方案是使用Emscripten(一个源到源的编译器)。Emscripten支持C/C++和OpenGL,将把源代码翻译成html/JavaScript。
要使用Emscripten,您需要使用SDL作为平台抽象层(用于获取OpenGL上下文以及加载图像)。
Emscripten目前正在虚幻引擎中使用,并且还将在Unity 5引擎中使用。
在此处阅读有关该项目的更多信息: https://github.com/kripken/emscripten

1

-1

两种方法:

  1. 转换为Java。然而,作为可移植性的代价,您的应用程序将遭受性能损失。但由于Java无处不在,这种方法确保您的代码可以在大多数浏览器中执行。

  2. 使用ActiveX,它允许您运行Microsoft Windows的本机二进制代码。这在生产环境中不被推荐,因为ActiveX众所周知存在潜在的安全漏洞,但由于您的讲师是查看它的人,安全似乎并不是一个大问题。这仅适用于Microsoft平台(Windows+IE)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接