2012-12-09 109 views
0

我從3學期開始學習計算機科學,我們剛剛開始使用openGl 1.0。我們正在做非常基礎(api背後的數學)。學習OpenGL 1

本講座由4部分構成,共4學期。

現在我真的很想讀一本書,而我聽到這個講座,但我不知道我應該閱讀哪一本。

我應該得到一本關於opengl 1或opengl 3+的書嗎?

或者我應該等到我們從opengl3開始,同時閱讀一本關於數學的書,比如this

回答

3

用於學習3D圖形的舊版OpenGL沒有任何問題。 C編程語言已有40年曆史,Lisp更多,但它們仍然相關。我認爲至少使用OpenGL 1.3或者2.0/2.1是很重要的,因爲像大多數軟件一樣,OpenGL 1.0有一些可怕的位,可以在後來的版本中快速修復。

藉助OpenGL 1.x或2.x,您將瞭解3D圖形的基礎知識:多邊形幾何體,嵌套轉換,燈光材質,紋理映射&。使用OpenGL 1或2比使用3或4更容易學習,因爲OpenGL 1/2中有更多內置功能,並且有許多年的書籍和在線教程可用於指導。

要讀的書:「紅皮書」OpenGL編程指南,最好是較舊的第3版或第4版;或OpenGL SuperBible,再次是第二或第三版。你也可以查看優秀的NeHe網絡教程 - 對於OpenGL 1/2,現在稱爲「傳統教程」。對於3D圖形背後的數學,我推薦Dunn & Parberry的3D數學入門圖形和遊戲開發。

OpenGL 1.x中沒有的東西是現代GPU的着色器。一旦你掌握了基礎知識,你可以從OpenGL 2中的頂點和片段着色器開始。一旦你熟悉這些,開始編程OpenGL 4.(我建議跳過3,直接進入OpenGL 4/DirectX 11.)

這是假設你想從上到下學習,從內置的API函數開始,這些函數爲你完成大部分工作,並逐漸進入更多細節。相反,如果您希望深入探索OpenGL SuperBible第5版和採用OpenGL 4的現代GPU,這不是我喜歡的方法,因爲恕我直言,OpenGL 3/4是「3D彙編語言」和學習曲線非常陡峭,但有些人更喜歡它。

希望這會有所幫助。

+0

是的,這是一個很大的區別。今天,所有實時圖形都發生在可自由編程的GPU上。你無法真正將它與編程語言進行比較。或者實際上你可以。 C和40年前一樣好,因爲它是Turing Complete。帶GLSL的OpenGL-3也是Turing Complete。但固定功能的OpenGL-1是*不*圖靈完成。因爲這是一個巨大的概念差異。着色器也是計算機圖形領域的一個不可或缺的概念,但固定功能流水線GPU(如OpenGL-1.1)從未支持過;很多圖形編碼人員都因此嘲笑GPU。 – datenwolf

+0

另外我認爲用着色器做這件事會讓學習變得更容易。是的,還有更多的樣板代碼需要寫入。但僅僅在幕後沒有「魔術」的事實實際上增強了學習體驗。在OpenGL-3中,固定函數OpenGL的許多新手陷阱(如在事件處理程序中設置投影的錯誤做法)根本就不存在。 glTexEnv的整個麻煩以及啓用/禁用的紋理目標消失。 – datenwolf

+0

今天我購買了版本4.3的紅皮書第8版(粗略切割)。我會同時讀到我的演講。 –

2

OpenGL-1.0 - 這是超過20歲的哇。或者你的意思是OpenGL-1.1,仍然超過15歲。無論如何,請告訴你的教授或助教在將來教有用的東西;你可能不在計算機圖形學的人格學課程中。

你絕對應該學習OpenGL-3和更進一步。實際上,版本3確實引入了長期逾期的API清理,並且從長遠來看,必須使用着色器才能使事情變得更加容易。

+0

我正在學習一些獨特的東西,它是以計算機圖形學爲重點的計算機科學。我不完全確定我們使用的是哪個版本,但他告訴我們,我們從opengl開始。我們現在只使用過剩。所以學習opengl 3+也會幫助我理解opengl1?因爲我仍然需要在opengl1/glut中編寫我的考試。 –

+0

@MaikKlein:OpenGL-3與OpenGL-1非常不同。1;沒有即時模式,沒有內置矩陣堆棧,所有事情都是通過緩衝區對象發生的。所以學習OpenGL-3不會幫助你使用OpenGL-1。但就像我說的,今天給出的計算機圖形學課程根本不應該使用OpenGL-1。 – datenwolf

+0

我想那時我們正在學習的流水線也是opengl 1.1呢? '對象座標 - >模型視圖矩陣 - >投影矩陣 - >透視分割 - >視口轉換' –