OpenGL 3.x和2.x有很大的不同嗎?是浪費時間學習OpenGL 2.x還是他們都遵循相同的概念?我想我在某個地方讀到2.x是基於狀態的,而3.x不是,這是對的嗎?跳過OpenGL 2.X並開始學習OpenGL 3.X會更好嗎?
回答
瞭解任何有關它的最多學習材料。 NeHe's tutorials是一個很好的開始。
幾個月前,我做了一些OpenGL工作,儘管我不記得我編程的版本,但我可以告訴你,這是最重要的概念。當你剛剛開始並且不處理着色器和其他事情時尤其如此。
(見馬爾特Clasen的答案。)
他們幾乎完全向後兼容,因此可以隨心所欲地用舊版本的學習是要應用到以後的版本就好了。如果你必須在某個地方「瞄準」,2.0可能是一個不錯的選擇。如果你看看the OpenGL Wikipedia page,你可以看到各種版本添加了什麼,併爲你自己決定你認爲你需要哪些功能。
男人,不停地給我投票。把它吸起來。我會支持這一建議,特別是在沒有任何人提供GL 3特定資源的情況下。你可以學習使用2.x的着色器,並且如果將幾何圖形提供給GL的方法即使是任務難度的一小部分,我也希望自己處於你的鞋子中。 – 2010-07-12 16:32:45
要小心。 OpenGL 3棄用了許多功能,特別是OpenGL早期的功能。如果你從過時的教程開始(像NeHe的大部分教程),你很可能會習慣過時的OpenGL 2風格。
在OpenGL 3中沒有固定的功能管道(如果你不使用向後兼容功能)。你必須使用着色器。沒有glBegin/glEnd了。你必須使用頂點緩衝區。兩者都已經在OpenGL 2中可用,但大多數教程都以glBegin/glEnd開始,並設置OpenGL顏色屬性。這是一個非常重要的區別。
OpenGL 2提供了無數的方法來將東西放在屏幕上,每個至少有一個流行的教程。 OpenGL 3下降了很多,包括OpenGL 2的「初學者子集」(固定函數glBegin/glEnd)。所以如果你想長期瞄準OpenGL 3,從一開始就要去做。除了陷入死衚衕外,沒有什麼比這更激烈的了。
OpenGL 3不會丟棄任何東西。棄用意味着將來它會被拋棄,而不是被拋棄。只要一個人使用完整的環境,你所擔心的一切仍然存在。 我很懷疑驅動程序會在很長一段時間內放棄對固定功能管道的支持,考慮到現有軟件使用它的程度。 – 2009-08-16 16:39:32
對於OpenGL 3,意味着整個3.x系列,而最近發佈的3.2實際上會拋棄棄用的函數。請參閱「OpenGL 3.2中的新增功能」,http://www.opengl.org/documentation/current_version/:「OpenGL 3.2和隨附的OpenGL着色語言1.50添加了許多新功能,同時通過移除舊功能簡化了API和着色語言在OpenGL 3.0中不推薦使用固定功能的接口。「 – 2009-08-16 19:56:06
Thanx Malte 這就是我所擔心的。即使有什麼東西仍然存在,我想要學習最好的做事方式,而glBegin/End東西似乎不是那樣。所以,你知道在哪裏可以找到任何不以未被認可的東西開始的opengl 3.x教程嗎? – 2009-08-17 16:41:23
我正在閱讀「學習現代3D圖形編程」,雖然我沒有硬件來實際使用OpenGL 3,但它幫助我理解概念,使我能夠溝通1.1風格,並且一旦我有硬件可以使用就移動到3。
我覺得現代的着色器只有風格是OpenGL的未來和實時3D圖形。我建議立即從OpenGL 3開始。另一方面,舊式的OpenGL更容易學習,並且在不理解整個API的情況下做簡單的事情會更容易。
但是,無論您是否跳過舊式固定功能或者如果您使用Direct3D或OpenGL,重要的是您還要了解圖形管道的原理和內部工作原理,因爲我經常(並非總是)看到有人對OpenGL有疑問,爲什麼他們的代碼無法工作,他們似乎對計算機圖形學以及各自的OpenGL函數的真正意義和作用並不瞭解。
編輯:另外,看看this question一些書的建議,根據你的決定。
我覺得這個教程非常易於使用,它適用於OpenGL 3 http://duriansoftware.com/joe/An-intro-to-modern-OpenGL.-Table-of-Contents.html。其他教程,你可以找到有用:
- 1. 如何使用C學習OpenGL 3.x?
- 2. 學習OpenGL ES 1.x
- 3. 學習OpenGL的Mac OS X上
- 4. 我想通過OpenGL編程指南第7版學習OpenGL 3,但OpenGL 4.0與3.x有什麼不同?
- 5. OpenGL vs OpenGL ES和OpenGL 1.x vs OpenGL 2.0要學什麼?
- 6. cocos2d-x 3.x openGL獲取錯誤
- 7. 在.NET世界中開始學習C#或C++會更好嗎?
- 8. 哪一個學習Python 3.x或Python 2.x?
- 9. OpenGL 4.1學習資源
- 10. 從Sencha Touch 2或Sencha Touch 1.x開始更好嗎?
- 11. 學習Opengl與「Android的OpenGL ES 2」,但代碼不起作用
- 12. 你會開始學習Smalltalk嗎?
- 13. 學習OpenGL對我有用嗎?
- 14. 爲Android遊戲開發學習OpenGL ES
- 15. 學習沒有GLUT的OpenGL?
- 16. iPhone:從哪裏開始學習基本2D繪圖的OpenGL ES?
- 17. OpenGL/Java學習曲線
- 18. XNA,直接X,OpenGL
- 19. 在OpenGL 3.x的VBO索引
- 20. CG Shader語義與OpenGL 3.x?
- 21. OpenGL 3.x Macbook Air 2012年中期
- 22. 不那麼好想過OpenGL學習材料
- 23. OpenGL ES 2.0 X軸被翻轉了嗎?
- 24. 如何用fltk 1.3創建opengl 3.x或4.x上下文?
- 25. OpenGL程序在GL 3.x中工作,但不是4.x
- 26. int x = 3. x會緩存嗎?
- 27. 學習Wordpress對開始開發者有好處嗎?
- 28. 學習OpenGL ES 2.0,來自2D
- 29. 開始使用opengl
- 30. OpenGL學習基於開放式gl 2.0的項目的建議
我認爲這個建議危險:未與着色效果處理在學習過時的固定功能管道。你顯然開始使用的子集在OpenGL 3中不再可用。 – 2009-08-16 12:39:26
我同意,自從Nehe教程以來,OpenGL發生了很大的變化。如果你真的想要利用硬件加速技術,很可能你會想要使用OpenGL而不想這麼做,因爲有更多簡單的庫可以學習,Nehe對你來說沒有什麼用處。 – Kilon 2012-02-07 10:14:35