2012-03-27 70 views
10

我已经使用OpenGL完成了一个图形项目,现在我想将它转换为WebGL,以便我可以将它放到Web上。有什么办法可以直接将OpenGL C++代码转换为WebGL,或者我必须手动重写? 我只学习了WebGL的一些基础知识,因为我也在并行学习JavaScript(仅因为它在编码webgl时是必需的)。 也欢迎任何其他建议。如何将OpenGL代码转换为WebGL

回答

13

我很惊讶没有人提到Emscripten。这不是一个完美的解决方案,根据你的代码的结构和你使用的库你可能不得不做一些手动调整,但它作为一个通用的C++到Javascript交叉编译器很好。

我没有承诺它是一个神奇的子弹,但它可能值得一看。

+0

非常感谢.. :)我正在尝试使用Emscripten ...让我们看看发生了什么。 我正在使用glut库。 – Bond 2012-03-27 20:25:21

+2

你有任何更新如何这对你工作?我正在一类是严格的OpenGL,但我希望我的最后的项目转换成基于网络的版本... – 2013-09-05 15:53:33

+0

让我添加桌面GL具有[旧的过时的固定功能的API(HTTP://计算器.com/a/35802910/128511),如果你碰巧仍在使用它,需要一些工作来模拟。 – gman 2016-03-09 08:27:06

0

一般来说,需要手动重写。通用解决方案不太可能正确解释现有代码。当然,你可以编写自己的转换器,因为你只能处理自己的代码和结构。

还值得一提的是,WebGL是OpenGL ES 2.0的一个子集,因此为桌面系统编写的代码不一定是兼容的。

我见过的最接近的代码是将OBJ模型转换为WebGL代码。

1

除非你的应用程序是微不足道的,否则你的问题的大部分将是将C++代码转换为JavaScript。 C++和JavaScript是完全不同的语言,例如一个是静态类型的,另一个是动态类型的。

WebGL基于OpenGL ES 2.0,它大致上是OpenGL 2.0的一个子集。所以你可以编写直接可以翻译的OpenGL代码,但不是所有的OpenGL代码都可以。如果没有更多的信息,很难知道移植OpenGL代码会有多容易。

我不知道有任何工具可以为你自动完成工作,如果我看到它们,我会对这些工具持怀疑态度。将一种编程语言或API的语义映射到另一种语言是自动化的非常困难的任务。

+0

kusma和@SpliFF 感谢回答。实际上,我已经创建了一座建筑,现在我想通过网络宣传它,这就是为什么我需要webGL。 – Bond 2012-03-27 14:41:38

4

这是一个商业解决方案,但Mandreel将做到这一点。它甚至模拟了WebGL上的OpenGL ES 1.1固定功能支持。也有Emscripten这将转换的C/C + +显然有一些OpenGL support

否则,

  1. 你将不得不在C++转换为JavaScript当然
  2. 的如果使用旧的OpenGL的老固定功能特点(glVertex,glColor,等..)你“将不得不将它们转换为使用OpenGL 4和OpenGL ES 2.0
+0

非常感谢您的帮助。我将不得不看到我的Mandreel预算。但它真的很棒。 – Bond 2012-03-27 20:24:00

0

的新的可编程风格似乎http://asmjs.org/可以在浏览器中运行非JavaScript代码的基础。我认为Emscriptem(已经提到过)可以理解一些C++编译器可以输出的LLVM,但它也可能需要手动工作,这些事情的方式。

我从未使用过任何这些,但了解他们,他们看起来有趣,并试图达到你想达到什么目的,我不能说实施任何与他们在“现实世界”是如何工作的。