我用C ++ / OpenGL(使用Dev-C ++编译器)为我的微积分2类编写了一个程序。老师很喜欢这个程序,他请我以某种方式把它放到网上,这样我就可以在网页浏览器上运行它而不是下载.exe。有点像java小程序在浏览器上运行。
问题是:
如果可能,我可以在网络浏览器中显示C ++ / OpenGL程序吗? 我正在考虑转向JOGL,这是对OpenGL的Java解释,但我更喜欢使用C ++,因为我对它更熟悉。
还有其他更好,更简单的3D网络基础API,我可以考虑吗?
答案 0 :(得分:5)
AFAIK,只有3个选项:
Java的。它包括整个OpenGL堆栈。
Google's Native Client (NaCL),基本上它是一个插件,让你运行可执行的x86代码。只需编译它并从HTML中调用它。高度实验性,没有人会安装它。不确定它是否允许您访问OpenGL库。
Canvas:3D。另一个很实验的项目。这是一个可从JavaScript访问的加速3D API。 AFAICT,它仅适用于Firefox的实验版本。
如果有的话,我会选择Java。
OTOH,如果它主要是矢量作品(没有大量的纹理和照明/阴影),你可以简单地通过将矢量从3D投影到2D来使其适用于SVG。在这种情况下,您可以使用SVGWeb实现跨浏览器兼容性,它是一个简单的JavaScript库,允许您透明地使用浏览器的本机SVG支持或基于Flash的SVG渲染器。
答案 1 :(得分:5)
WebGL最近有很多活动。它是Javascript与本机OpenGL ES 2.0实现的绑定,设计为画布HTML5元素的扩展。
Firefox,Safari,Chrome和Opera的夜间版本支持它。
根据众所周知的NeHe OpenGL教程,查看这些tutorials。
基于WebGL的几个项目正在出现,最着名的是Scenegraphs API。
我几乎可以肯定WebGL是不久的将来的方式。 Mozilla / Google / Apple / Opera正在推广它,如果技术有效并且有足够的客户/开发人员需求,那么微软可能会在IE上实现它(我们希望不会有“WebDX”!)。
答案 2 :(得分:2)
在Java之外,浏览器中的OpenGL确实处于起步阶段。谷歌为它推出了一个非常酷的API和插件。它被称为O3D:
http://code.google.com/apis/o3d/
关于整体倡议的文章: http://www.macworld.com/article/142079/2009/08/webgl.html
答案 3 :(得分:1)
你真的有时间重写它吗?我认为学生们太忙于非必要的任务工作。
但是如果你真的想这样做,也许以flash手机的形式预览它是最简单的方法。那么这只是一个问题,如果人们有兴趣,你可以提供真实应用程序的下载链接。
答案 4 :(得分:1)
这不是OpenGL,但Web3D Consortium's X3D specification可能会引起人们的兴趣。
答案 5 :(得分:1)
另一种解决方案是使用Emscripten(源到源编译器)。 Emscripten支持C / C ++和OpenGL,并将源代码转换为html / JavaScript。
要使用Emscripten,您需要使用SDL作为平台抽象层(用于获取OpenGL上下文以及加载图像)。
Emscripten目前正在虚幻引擎中使用,也将用于Unity 5引擎。
在此处阅读有关该项目的更多信息: https://github.com/kripken/emscripten
答案 6 :(得分:0)
两种方法:
切换到Java。但是,作为便携性的折衷,您的应用程序将遭受性能损失。但由于Java无处不在,这种方法可确保您的代码可以在大多数浏览器中执行。
使用ActiveX,它允许您为Microsoft Windows运行本机二进制代码。这在生产中不推荐使用,因为activeX众所周知是一个潜在的安全漏洞,但由于您的讲师是查看它的人,安全性似乎不是什么大问题。这仅适用于Microsoft平台(Windows + IE)。