如果你只在兩年前學會了它,那麼教程都非常過時了。已知立即模式在很長很長的時間內已被棄用。實際上是第一個計劃,放棄它,並顯示列表追溯至2003年。
頂點數組,因爲1.1版本已經存在了,而且他們已經爲自從發送幾何OpenGL的首選方法;在即時模式下,每個頂點都會導致幾個函數調用,因此對於任何嚴重複雜的對象,您都需要花更多時間來管理函數調用堆棧,而不是執行實際的渲染工作如果在引入Vertex Arrays後使用Vertex Arrays,切換到Vertex Buffer Objects就像插入或替換幾行一樣複雜。
使用OpenGL-3的最大障礙在於Windows,其中必須使用代理上下文才能訪問選擇OpenGL-3功能以進行上下文創建所需的擴展功能。然而,再次沒有大的障礙,20行代碼頂部。而且,像我這樣的一些程序,無論如何都會創建一個代理GL上下文,所有可共享的數據都將上傳到該上下文中,從而允許嚴格地銷燬/重新創建可見的上下文,但可以完全訪問紋理,VBO和其他東西(可以共享VBO,這是使用它們而不是簡單頂點數組的另一個原因;這看起來可能不是什麼大的東西,至少在單個進程中使用上下文時不會;但是像X11/GLX這樣的平臺可以在X11客戶端之間共享OpenGL上下文,它甚至可能運行在不同的機器上!)
另外像矩陣操作棧的功能存在導致人們誤解,OpenGL是一些矩陣數學庫,有些甚至認爲它是一個特別快速的。這兩個都不是真的。去除矩陣操作函數是非常重要和正確的事情。無論如何,每個嚴肅的OpenGL應用程序都會實現他們自己的矩陣運算。例如,任何使用某種物理引擎的現代遊戲都可以直接在OpenGL(glLoadMatrix或glUniformMatrix)中使用物理計算吐出的變換矩陣,完全繞過其餘的矩陣函數。這也意味着具有多個矩陣堆棧(GL_PROJECTION,GL_MODELVIEW,GL_TEXTURE,GL_COLOR),即能夠在幾個矩陣上使用相同的一組操作函數的唯一原因已被廢棄,並且可能已被諸如glLoadMatrixSelected{f,d}v(GLenum target, GLfloat *matrix)
之類的東西取代。然而,制服和着色器已經存在了,所以合乎邏輯的步驟並沒有引入新的功能,而是重複使用已經用於該任務的現有API,而不是已經不再需要的東西。
TL; DR:新的OpenGL-3 API非常簡單地使用它。它更清晰,缺陷更少,恕我直言,也更加新手友好。