2012-03-27 68 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,但它也可能需要手動工作,這些事情的方式。

我從未使用過任何這些,但瞭解他們,他們看起來有趣,並試圖達到你想達到什麼目的,我不能說實施任何與他們在「現實世界」是如何工作的。