2009-08-15 69 views

回答

-7

瞭解任何有關它的最多學習材料。 NeHe's tutorials是一個很好的開始。

幾個月前,我做了一些OpenGL工作,儘管我不記得我編程的版本,但我可以告訴你,這是最重要的概念。當你剛剛開始並且不處理着色器和其他事情時尤其如此。

(見馬爾特Clasen的答案。)

+24

我認爲這個建議危險:未與着色效果處理在學習過時的固定功能管道。你顯然開始使用的子集在OpenGL 3中不再可用。 – 2009-08-16 12:39:26

+1

我同意,自從Nehe教程以來,OpenGL發生了很大的變化。如果你真的想要利用硬件加速技術,很可能你會想要使用OpenGL而不想這麼做,因爲有更多簡單的庫可以學習,Nehe對你來說沒有什麼用處。 – Kilon 2012-02-07 10:14:35

8

他們幾乎完全向後兼容,因此可以隨心所欲地用舊版本的學習是要應用到以後的版本就好了。如果你必須在某個地方「瞄準」,2.0可能是一個不錯的選擇。如果你看看the OpenGL Wikipedia page,你可以看到各種版本添加了什麼,併爲你自己決定你認爲你需要哪些功能。

+0

男人,不停地給我投票。把它吸起來。我會支持這一建議,特別是在沒有任何人提供GL 3特定資源的情況下。你可以學習使用2.x的着色器,並且如果將幾何圖形提供給GL的方法即使是任務難度的一小部分,我也希望自己處於你的鞋子中。 – 2010-07-12 16:32:45

48

要小心。 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,從一開始就要去做。除了陷入死衚衕外,沒有什麼比這更激烈的了。

+3

OpenGL 3不會丟棄任何東西。棄用意味着將來它會被拋棄,而不是被拋棄。只要一個人使用完整的環境,你所擔心的一切仍然存在。 我很懷疑驅動程序會在很長一段時間內放棄對固定功能管道的支持,考慮到現有軟件使用它的程度。 – 2009-08-16 16:39:32

+11

對於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

+0

Thanx Malte 這就是我所擔心的。即使有什麼東西仍然存在,我想要學習最好的做事方式,而glBegin/End東西似乎不是那樣。所以,你知道在哪裏可以找到任何不以未被認可的東西開始的opengl 3.x教程嗎? – 2009-08-17 16:41:23

4

我正在閱讀「學習現代3D圖形編程」,雖然我沒有硬件來實際使用OpenGL 3,但它幫助我理解概念,使我能夠溝通1.1風格,並且一旦我有硬件可以使用就移動到3。

http://www.arcsynthesis.org/gltut/

2

我覺得現代的着色器只有風格是OpenGL的未來和實時3D圖形。我建議立即從OpenGL 3開始。另一方面,舊式的OpenGL更容易學習,並且在不理解整個API的情況下做簡單的事情會更容易。

但是,無論您是否跳過舊式固定功能或者如果您使用Direct3D或OpenGL,重要的是您還要了解圖形管道的原理和內部工作原理,因爲我經常(並非總是)看到有人對OpenGL有疑問,爲什麼他們的代碼無法工作,他們似乎對計算機圖形學以及各自的OpenGL函數的真正意義和作用並不瞭解。

編輯:另外,看看this question一些書的建議,根據你的決定。