2009-09-03 84 views
7

我用C++/OpenGL(使用Dev-C++編譯器)爲我的微積分2類編寫了一個程序。老師喜歡這個程序,並且他讓我以某種方式把它放到網上,這樣,我就可以在網絡瀏覽器上運行而不是下載.exe。有點像java applets在瀏覽器上運行。在網絡中使用openGL的最佳方法是什麼?

的問題是:

如何如果可能的話,我可以在Web瀏覽器中顯示C++/OpenGL的程序? 我正在考慮轉向JOGL,這是對OpenGL的Java解釋,但我寧願留在C++中,因爲我對它更熟悉。

還有沒有其他更好,更容易的3D網絡基礎API,我可以考慮?

+0

有一個名爲「團結網絡播放器」的東西。不知道底下是什麼,我剛剛偶然發現了一個3D遊戲。 – Eugene 2009-09-03 03:30:50

+0

我會檢查出來的 – 2009-09-03 03:43:59

+0

如果你已經知道C++,JOGL是非常平易近人的。我不認爲你會使用JOGL有任何問題。 – Ricket 2009-09-03 12:09:50

回答

5

AFAIK,只有存在的3個選項:

  1. 的Java。它包含整個OpenGL堆棧。

    • Google's Native Client (NaCL),本質上它是一個讓您運行可執行x86代碼的插件。只需編譯它並從HTML中調用它。高度實驗性,沒有人會安裝它。不確定它是否允許您訪問OpenGL庫。

    • Canvas:3D。另一個很實驗的項目。這是一個可從JavaScript訪問的加速3D API。 AFAICT,它只在Firefox的實驗版本上。

我會去爲Java,如果在所有。如果它主要是矢量作品(沒有大量的紋理和光照/陰影),你可以簡單地通過將矢量從3D投影到2D來使它在SVG上工作。在這種情況下,您可以使用SVGWeb實現跨瀏覽器兼容性,它是一個簡單的JavaScript庫,允許您透明地使用瀏覽器的本機SVG支持或基於Flash的SVG渲染器。

+0

是的,我雖然是同一件事。對此沒有太多選擇。但謝謝你的答案。 – 2009-09-03 03:28:58

1

你真的有時間重寫嗎?我認爲學生們忙於不必要的任務工作。

但是,如果你真的想這樣做,也許預覽它作爲Flash電影運行是最簡單的方法。那麼這只是一個問題,如果人們感興趣,你可以提供一個下載鏈接到真正的應用程序。

+0

LOL我沒有那麼多的工作時間,所以我花了大部分時間學習,所以我可以花時間。 +大聲笑我可以做到這一點,但我不知道我很好奇如何在網絡上做OpenGL。 – 2009-09-03 03:12:18

0

兩種方法:

  1. 切換到Java。但是,您的應用程序將因性能損失而遭受損失,以此作爲可移植性的折衷。但是由於Java無處不在,這種方法可以確保您的代碼可以在大多數瀏覽器中執行。

  2. 使用ActiveX,它允許您爲Microsoft Windows運行本機二進制代碼。這在生產中不被推薦,因爲activeX是衆所周知的潛在安全漏洞,但由於您的講師是查看它的人,所以安全性似乎並不是什麼大不了的事情。這僅適用於Microsoft平臺(Windows + IE)。

5

最近有很多活動​​。它是原生OpenGL ES 2.0實現的Javascript綁定,被設計爲canvas HTML5元素的擴展。

它由Firefox,Safari,Chrome和Opera的夜間版本支持。

看看這些tutorials,基於衆所周知的NeHe OpenGL教程。

基於WebGL的幾個項目正在興起,最引人注目的是Scenegraphs API。

  • 從獨立隊:SceneJSGLGESpiderGL
  • 來自Google:O3D plugin背後的團隊正試圖爲項目實施純WebGL後端(source),以便不需要插件。
  • 來自W3C/Web3D:目前正在討論將X3D作爲任何HTML5 DOM樹的一部分,就像HTML4中的SVG一樣。去年出生的X3DOM項目支持這個想法。現在它使用WebGL作爲渲染後端,並且自2010年3月以來是1.0版。

我幾乎可以肯定WebGL是不久的將來要走的路。 Mozilla /谷歌/蘋果/歌劇院正在推廣它,如果技術可行,並且有足夠的客戶/開發者需求,也許微軟會在IE上實現它(我們希望不會有「WebDX」!)。

1

另一個解決方案是使用Emscripten(源到源編譯器)。 Emscripten支持C/C++和OpenGL,並將源代碼轉換爲html/JavaScript。

要使用Emscripten,您需要使用SDL作爲平臺抽象層(用於獲取OpenGL上下文以及加載圖像)。

Emscripten目前正在虛幻引擎中使用,並且還將用於Unity 5引擎。

瞭解更多關於該項目的位置: https://github.com/kripken/emscripten

相關問題