我已經使用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. 如何將curl代碼轉換爲java
- 4. 如何將.Net代碼轉換爲vbscript?
- 5. 如何將Java代碼轉換爲mapreduce?
- 6. 如何將c#代碼轉換爲vb.net
- 7. 如何將此代碼轉換爲LINQ
- 8. 如何將Curl代碼轉換爲Java
- 9. 如何將DLL轉換爲C++代碼?
- 10. 如何將VC++代碼轉換爲C#?
- 11. 如何將JavaScript轉換爲PHP代碼
- 12. 如何將javascript轉換爲angularjs代碼
- 13. 如何將c代碼轉換爲matlab
- 14. 如何將xaml轉換爲代碼?
- 15. 如何將C#代碼轉換爲C++
- 16. 如何將JavaScript代碼轉換爲JavaScript?
- 17. 如何將`gulpjs`代碼轉換爲`clojurescript`?
- 18. 如何將代碼轉換爲winform?
- 19. 將代碼轉換爲POST
- 20. 將UML轉換爲代碼
- 21. 將xml轉換爲代碼
- 22. 將代碼轉換爲constexpr
- 23. 將ASTNode轉換爲代碼
- 24. 將代碼轉換爲lambda
- 25. 將JavaScript代碼轉換爲C代碼
- 26. 將PHP代碼轉換爲C#代碼
- 27. 將matlab代碼轉換爲R代碼
- 28. 將JavaScript代碼轉換爲VBScript代碼?
- 29. 將Java代碼轉換爲C#代碼
- 30. 將Android代碼轉換爲MonoAndroid代碼
非常感謝.. :)我正在嘗試使用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