2010-06-03 147 views
7

我正在研究C++跨平臺OpenGL應用程序(Windows,Linux和MacOS),我想知道是否有人可以在將大型應用程序移植到OpenGL 3時分享一些建議。我正在研究OpenGL 3,因爲我認爲我們可以從使用新的「同步對象」中獲益很多。 Nvidia自從Geforce 256天(gl_nv_fences)以來一直支持這種擴展,但在OpenGL 3.0 +之前似乎在ATI硬件上沒有相應的功能... ...將項目移植到OpenGL3

我們的代碼使得glut/freeglut,glu函數, OpenGL 2擴展和CUDA(在支持的硬件上)。我現在面臨的問題是「gl3.h」和「gl.h」是相互不兼容的(如gl3.h中所述)。你們知道是否有GL3的同類產品?另外,看一下CUDA工具包頭文件,似乎GL-CUDA互操作性只有在使用舊版本的OpenGL時纔可用...(cuda_gl_interop.h包含gl.h ...)。我錯過了什麼嗎?

非常感謝您的幫助。

回答

3

最後更新過剩爲3.7版本,大約10年前。考慮到這一點,我懷疑它會有史以來支持OpenGL 3.x(或4.x)。

工作在OpenGlut上的人似乎在考慮OpenGL 3.x支持的可能性,但還沒有做任何事情。

FLTK有一個(部分)過剩模擬,但它的部分足以讓一個「大量使用過剩」的程序可能無法與它一起工作。由於FLTK正在積極開發中,我猜想它最終會支持OpenGL 3.x(或4.x),但我不相信它已經提供,並且可能會有疑問, 。

編輯:就CUDA而言,顯而易見(儘管肯定不是微不足道的)答案是使用OpenCL代替。這與硬件(例如ATI/AMD主板)和更新版本的OpenGL相兼容。

這留下了glu。坦率地說,我不認爲有明確或明顯的答案。 OpenGL的從支撐之類的東西Glu和而不是丟棄甚至更多的曾經是核心的OpenGL規範(例如,所有的矩陣操作的原語)的一部分的隱約穀氨酸樣功能支持移動。就我個人而言,我認爲這是一個錯誤,但無論它是好還是壞,事情就是這樣。不幸的是,glu有點像過剩 - 這個規範的最後一次更新是在1998年,對應於OpenGL 1.2。這根本不會使更新看起來可能。不幸的是,我不知道它有任何真正的直接替代品。顯然還有其他圖形庫提供(至少一些)類似的功能,但是我所能想到的所有圖形庫都需要大量的重寫。

+0

事實上,GLUT是不是一個真正的問題,因爲我們很快將停止使用它......但GLU和CUDA的互操作性仍然是有問題的。不過,謝謝你的回答! – 2010-06-03 18:12:53

+0

非常感謝您的編輯!我認爲OpenGL的新方向也是一個錯誤......經過使用舊的固定管道範例進行的所有開發之後,似乎董事會正在無條件地採取大膽的舉措...噢,學習OpenCL i的時間猜;) – 2010-06-04 12:52:34

+0

@Decapsuleur:我要補充一個細節:因爲你顯然混合計算(CUDA/OpenCL的)和繪圖(OpenGL的),你可能也想看看使用OpenGL 4.提高混合的能力這兩個人是這樣的,如果你打算跳起來,跳起來不會太大(可以這麼說)。 – 2010-06-04 14:10:34