我已经使用OpenGL完成了一个图形项目,现在我想将它转换为WebGL,以便我可以将它放到Web上。有什么办法可以直接将OpenGL C++代码转换为WebGL,或者我必须手动重写? 我只学习了WebGL的一些基础知识,因为我也在并行学习JavaScript(仅因为它在编码webgl时是必需的)。 也欢迎任何其他建议。如何将OpenGL代码转换为WebGL
回答
我很惊讶没有人提到Emscripten。这不是一个完美的解决方案,根据你的代码的结构和你使用的库你可能不得不做一些手动调整,但它作为一个通用的C++到Javascript交叉编译器很好。
我没有承诺它是一个神奇的子弹,但它可能值得一看。
一般来说,需要手动重写。通用解决方案不太可能正确解释现有代码。当然,你可以编写自己的转换器,因为你只能处理自己的代码和结构。
还值得一提的是,WebGL是OpenGL ES 2.0的一个子集,因此为桌面系统编写的代码不一定是兼容的。
我见过的最接近的代码是将OBJ模型转换为WebGL代码。
除非你的应用程序是微不足道的,否则你的问题的大部分将是将C++代码转换为JavaScript。 C++和JavaScript是完全不同的语言,例如一个是静态类型的,另一个是动态类型的。
WebGL基于OpenGL ES 2.0,它大致上是OpenGL 2.0的一个子集。所以你可以编写直接可以翻译的OpenGL代码,但不是所有的OpenGL代码都可以。如果没有更多的信息,很难知道移植OpenGL代码会有多容易。
我不知道有任何工具可以为你自动完成工作,如果我看到它们,我会对这些工具持怀疑态度。将一种编程语言或API的语义映射到另一种语言是自动化的非常困难的任务。
kusma和@SpliFF 感谢回答。实际上,我已经创建了一座建筑,现在我想通过网络宣传它,这就是为什么我需要webGL。 – Bond 2012-03-27 14:41:38
这是一个商业解决方案,但Mandreel将做到这一点。它甚至模拟了WebGL上的OpenGL ES 1.1固定功能支持。也有Emscripten这将转换的C/C + +显然有一些旧OpenGL support。
否则,
- 你将不得不在C++转换为JavaScript当然
- 的如果使用旧的OpenGL的老固定功能特点(glVertex,glColor,等..)你“将不得不将它们转换为使用OpenGL 4和OpenGL ES 2.0
非常感谢您的帮助。我将不得不看到我的Mandreel预算。但它真的很棒。 – Bond 2012-03-27 20:24:00
的新的可编程风格似乎http://asmjs.org/可以在浏览器中运行非JavaScript代码的基础。我认为Emscriptem(已经提到过)可以理解一些C++编译器可以输出的LLVM,但它也可能需要手动工作,这些事情的方式。
我从未使用过任何这些,但了解他们,他们看起来有趣,并试图达到你想达到什么目的,我不能说实施任何与他们在“现实世界”是如何工作的。
- 1. 如何将OpenGL代码转换为JOGL?
- 2. 将OpenGL 1.1代码转换为OpenGL 2.0
- 3. 将OpenGL 1.x代码移植到WebGL
- 4. 将OpenGL ES代码转换为OpenGL(在Mac上)
- 5. WebGL或CUDA代码如何实际转换为GPU指令?
- 6. 将webGL html转换为SVG
- 7. 如何将.htaccess代码转换为web.config?
- 8. 如何将HTML代码转换为Javascript?
- 9. 如何将Matlab代码转换为Delphi?
- 10. 如何将JavaScript代码转换为JavaScript?
- 11. 如何将VBscript转换为Python代码?
- 12. 如何将代码转换为winform?
- 13. 如何将javascript转换为angularjs代码
- 14. 如何将.htaccess代码转换为web.config?
- 15. 如何将xaml转换为代码?
- 16. 如何将Curl代码转换为Java
- 17. 如何将VC++代码转换为C#?
- 18. 如何将c#代码转换为vb.net
- 19. 如何将Scala代码转换为Scheme?
- 20. 如何将C#代码转换为C++
- 21. 如何将c代码转换为vb.net?
- 22. 如何将Java代码转换为Matlab
- 23. 如何将curl代码转换为java
- 24. 如何将Java代码转换为mapreduce?
- 25. 如何将.Net代码转换为vbscript?
- 26. 如何将c代码转换为matlab
- 27. 如何将`gulpjs`代码转换为`clojurescript`?
- 28. 如何将JavaScript转换为PHP代码
- 29. 如何将C#代码转换为C++?
- 30. 如何将jquery代码转换为javascript
非常感谢.. :)我正在尝试使用Emscripten ...让我们看看发生了什么。 我正在使用glut库。 – Bond 2012-03-27 20:25:21
你有任何更新如何这对你工作?我正在一类是严格的OpenGL,但我希望我的最后的项目转换成基于网络的版本... – 2013-09-05 15:53:33
让我添加桌面GL具有[旧的过时的固定功能的API(HTTP://计算器.com/a/35802910/128511),如果你碰巧仍在使用它,需要一些工作来模拟。 – gman 2016-03-09 08:27:06