2013-12-19 51 views
2

我更新了我的顯卡驅動程序以支持openGL 4,因此不推薦使用像glBegin這樣的函數將無法工作。但是,當我運行一個簡單的三角形程序時,glBegin仍然像以前一樣工作。 glBegin仍然由openGL 4支持,或者我錯過升級到openGL 4的一些步驟嗎?困惑於openGL版本

回答

5

只需用支持OpenGL 4.x的驅動程序並不意味着你將失去早期版本的功能。用OpenGL 3.2 核心兼容性型材的概念開始被引入,而這正是現代棄用之間的距離,實際起作用。

核心配置文件,你提到的東西,如glBegin是無效的。但是,在兼容性配置文件中,您可以繼續將API的棄用部分與新部件混合匹配。絕大多數新的OpenGL功能不能保證與API的棄用部分一起工作,很大程度上是因爲大多數新功能都以某種方式與GLSL和可編程管道相關。

現在,當你討論喜歡Mac OS X的平臺,OS X 10.7開始事情變得更加複雜了一點,蘋果開始支持OpenGL 3.2。然而,他們以這樣一種方式設計它們的實現方式,即訪問OpenGL 3.2功能的方式是獲得核心配置文件。他們繼續支持傳統的OpenGL 2.1實現,因此舊軟件不必重寫,但爲了利用OS X上的任何OpenGL 3.2+特性,您必須先裝備所有已棄用的功能。


事實上,平臺一般都設計成你確實有做上下文創建期間額外工作,以獲得核心輪廓。除非你明確要求核心,你會得到兼容性(或在OS X的情況下,實施OpenGL 2.1)。這是一種使現有軟件儘可能無痛的整體折舊模型的方法。

2

「過時」並不一定意味着「它不會工作」,這意味着,供應商可以自由地實現它所要與硬件賣「因爲標準這麼說你不應該使用它」;許多品牌仍然在其自己的庫中提供不推薦的OpenGL上下文和函數。