2009-08-02 78 views
5

OpenGL 3.0和3.1已棄用了我認爲不可或缺的一些功能。特別是在着色器中使用固定函數。OpenGL:棄用的處理是什麼?

任何人都可以解釋什麼是真正的交易嗎?

爲什麼他們發現需要棄用這種有用的功能,以至於每個人都明白這一點,而且沒有一家理智的硬件公司會取消對它的支持?

回答

6

正如你所說,沒有硬件公司會取消對固定功能着色器的支持,因爲有太多的現有應用程序使用它們。然而,他們不想做的是找出如何指定FF着色器與它們添加的每個未來擴展之間的交互。這些交互非常複雜(部分原因是FF着色器如此複雜),這導致了供應商之間的錯誤和不一致的實現 - 這兩者對開發人員和最終用戶都不利。

所以他們畫了一條線:如果你想使用FF着色器,你不會得到任何新的功能。如果你想要新的功能,你不能使用FF着色器。這與微軟在D3D10中的做法非常相似:它增加了一大堆新功能,但同時完全去除了固定功能着色器。我們的信念是,需要新的非着色器功能但不需要可編程着色器的開發人員集合非常小。

1

固定功能着色器很容易被標準GLSL着色器所取代,因此很難理解爲什麼它們不應該被廢棄。

我不那麼肯定,他們不會在可預見的未來從硬件中掉落,因爲OpenGL ES 2.0不支持FF流水線(所以不會向後兼容OpenGL ES 1.x )。在我看來,目前OpenGL的很多動力來自移動平臺上廣泛採用的OpenGL ES,並且FF功能從那裏消失,將會有相當大的壓力來擺脫它的使用。

事實上,我期望更精簡的OpenGL ES實現可以在未來幾年內相當廣泛地替代標準OpenGL,並且FF功能可能會消失得更多,因爲大多數硬件將實現OpenGL ES,而不是因爲它從實現完整OpenGL的硬件中移除

2

應該澄清的是,標記爲「已棄用」的功能並未實際刪除。例如,OpenGL 3.0上下文具有所有功能 - 沒有任何內容。此外,一些供應商將推出可使用兼容性配置文件創建3.1和3.2環境的驅動程序,該配置文件也將啓用不推薦使用的功能。因此,仔細查看您將支持哪些供應商硬件,並詢問舊功能的ARB兼容模式。 (從3.2開始,還有「核心」配置文件,如果廠商希望製作這樣的產品,它允許供應商創建一個更精簡和更平均的驅動程序)

請注意,任何當前卡實際上沒有FF硬件部分 - 他們只運行着色器。當你問FF行爲時,GL運行時代表你的創作着色器..

+0

「GL運行時正在爲您創作着色器」。....您有任何參考嗎? – shoosh 2009-08-05 08:15:19

2

爲什麼他們找到需要棄用這種有用的功能,其明顯的每個人都使用,而且沒有健全的硬件公司要刪除支持?

我想那時蘋果一定是瘋了,因爲MacOSX 10.7只支持3.2 核心。沒有兼容性規範支持,沒有ARB_compatibility擴展,沒有。您可以創建2.1上下文或3.2核心上下文。

但是,如果你想原因:

  1. 爲了完整起見:什麼傑西·霍爾說。 ARB不再需要考慮固定功能和新功能之間的交互作用。整數數學,數組紋理和各種其他特徵被定義爲不適用於固定功能流水線。自GL 3.0推出以來,OpenGL在過去3年中確實有所改進; ARB變化的速度相當可觀。如果他們必須找到一種方法使所有這些功能與固定功能進行交互,那麼這是否可行呢?如果他們沒有固定的功能交互,你會不會抱怨你不能從舊代碼中訪問新功能?它可以很好地導入:

  2. 它充當了一個要使用什麼的強烈指示。即使兼容性上下文始終可用,您也可以查看核心OpenGL以瞭解應該如何解決問題。

  3. 它使得最終的桌面GL和GL ES統一更爲合理。 ES 2.0拋出了所有舊的東西,並採用了你可能認爲的核心GL 2.1。最終目標將是隻有一個OpenGL。要做到這一點,你必須能夠擺脫所有問題的桌面GL。

0

OpenGL允許「核心」配置文件和「兼容」配置文件。因此,對於大多數系統,您不會放棄對棄用或移除功能的任何訪問。

但是,如果你想確保兼容,最好堅持核心的東西。您不能保證兼容性配置文件(即使大多數硬件都具有一個兼容性配置文件,並且在當前狀態下,您很可能會遇到過時的OpenGL,而不是隻有一個核心)。另外OpenGL ES現在是OpenGL的一個子集,可以編寫OpenGL ES 2.x/3.x程序,並使其在OpenGL 4.3中運行,幾乎沒有變化。

像PlayStation和任天堂的遊戲機一起附帶自己的圖形庫,而不是使用OpenGL。

他們基於OpenGL,但在這裏剝離了類似的是ES(我不認爲ES 2.0是那時)。這些系統需要編寫自己的圖形驅動程序和庫,要求硬件供應商編寫基本上是整個舊式包裝庫的負載(有些固定功能的東西最終會在某個階段實現在着色器中,無論如何,glBegin/glEnd可能會自動變成VBO)。

我認爲確保開發者意識到他們應該編程的最新方式也很重要。幾十年來,人們已經被教導了「錯誤」的方式來默認做事,頂點緩衝對象被教導爲額外的東西。