2011-03-31 127 views
7

我正在研究一些跨平臺的桌面應用程序,這些應用程序有很多2-D圖形。我使用OpenGL 2.0規範,因爲我需要頂點着色器。我喜歡3.2+核心API,因爲它簡單而強大。我認爲3.2+核心可能是未來的選擇。但是恐怕現在這個功能可能在某些平臺上不可用(我的意思是舊的顯卡和缺乏現代Linux驅動程序的?)。也許,我應該使用類似OpenGL ES 2.0的API來輕鬆移植。什麼OpenGL版本可供跨平臺桌面應用程序選擇

3.2+ core,cards和linux driveres的狀態如何?

回答

6

較舊的英特爾芯片只支持OpenGL 1.5。後來的芯片(大約兩年前)有2.1,但是性能差於1.5。 Sandy Bridge聲稱支持「OpenGL 3」,但沒有說明它是否能夠做到3.3(就像達蒙所說的那樣),但Linux驅動程序現在只做2.1。所有具有閉源驅動程序的Radeon和Nvidia硬件都支持3.3(幾何着色器)和400-500系列支持4.1(鑲嵌着色器)。因此,你想要的版本是1.5(如果你關心的是Sandy-Bridge Intel廢話),2.1(幾乎所有的硬件),3.3(用於體面的硬件&閉源驅動)或者4.1(出血邊緣)。

我用#version 120編寫頂點和片段着色器,用#version 330編寫幾何着色器,使舊硬件的回退更容易。

+0

幾天前我遇到了英特爾芯片和OpenGL 2.1的問題。很可能,符合1.5會更好,但着色器有時真的不可或缺。 – Yury 2011-06-16 06:17:57

+0

我自己並沒有使用蘋果產品,但有一點需要補充:OS X似乎還沒有比OpenGL 2.1更好的支持:O – Tronic 2011-06-16 08:55:29

0

取決於您的目標市場的平均機器。儘管說實話,現在OpenGL 3.2+非常普遍。

1

我個人會選擇OpenGL 3.3,可選擇使用3.2加上擴展的後備(基本上是相同的)。這是使用OpenGL 3.x最方便的方式,並得到廣泛支持。

除了如果你真的想在沙橋上運行(其中,由於某些不明原因只支持3.0,儘管硬件能夠很好地運行3.3),對於3.1或3.0的目標並不是真的值得。另外3.1和3.0在着色器代碼中有非常大的變化,如果你想支持許多版本(在3.2和3.3中沒有這種問題),在我看來這是一個維護噩夢。

支持3.2的每個硬件也可以支持3.3,唯一的障礙可能是IHV不提供最新的驅動程序,或者用戶可能懶得更新。因此你不能假設「3.3到處都有作品」。不過,舊版驅動程序通常通過ARB擴展具有相同的功能。

1

Mac OS X目前不支持GL-3上下文。今年夏天可能會改變這種情況,但我建議堅持使用GL-2 plus擴展。

5

你可以繼續使用OpenGL ES 2.0。即使ES意味着Embed,這也是一個好方法,因爲它會刪除所有固定的函數(glBegin等):您正在使用OpenGL 2.x的一個子集。因此,如果您只考慮OpenGL ES 2.0來編寫軟件,它將會很快並且能夠在大多數情況下工作。

實際上,OpenGL ES 2.0和桌面GL可能有一些差異,但我不認爲它會是你會用到的東西。如果支持擴展GL_ARB_ES2_compatibility,則可以使用支持完整嵌入子集的「桌面」卡。 (4個函數和一些常量)

現在,真正的問題是你想支持多少年的硬件?他們仍然有很多非常老的硬件,它們對gl的支持很差。最好的辦法是支持不太老的(OpenGL 2。0已經老了):)

+0

+1 ES 2.0似乎是一個很好的功能組合(可以完全編程並移除所有傳統功能)和廣泛的兼容性。 – 2016-06-18 19:14:06