2010-01-16 40 views
4

我已經開始在Python中使用PyOpenGL 3.0.1b玩弄OpenGL。OpenGL新手和棄用

我看了一些示例代碼,並開始運行它並修改它等等。一切都很好,直到我變得不那麼無知。

http://pyopengl.sourceforge.net/documentation/manual-3.0/index.xhtml上列出OpenGL函數以及它們是否被棄用。所以我想我自己,我只需要找到一些最新的教程,不使用所有這些廢棄的廢話。

小時後,沒有這樣的運氣!棄用的示例代碼之後棄用的示例代碼...是否有某處我可以用於非棄用的教程?

+1

不是一個例子,但這個論壇帖子有一點「幫助,我什麼都不能畫!」種類的幫助:http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=252272 – 2010-01-16 22:10:46

+1

雖然如果你是全新的OpenGL,我會認真地推薦先學習OpenGL 2風格(大量的教程在那)。對於初學者來說,2.x更直接,而且稍後切換到3.x並不難。 – 2010-01-16 22:12:11

+2

我認爲從OpenGL 2.x開始危險。有很多方法可以在2.x中完成,並且很有可能你會開始學習那些在3.x中不推薦使用的方法。 – 2010-01-18 19:48:20

回答

2

OpenGL ES 2.0實際上與OpenGL 3非常相似,並且刪除了一些功能(例如多個渲染目標,一些着色指令等)。 OpenGL ES 2.0編程指南手冊提供了一些可供下載的教程和源代碼,可幫助您開始使用OpenGL 3.0。大多數情況下,ES 2.0中編譯的內容也會針對較新的OpenGL規範進行編譯。您也可以在線搜索ES 2.0教程。

我還建議檢查我正在開發的圖形引擎(OpenREng)。您可以查看OpenGL包裝類以查看更新規範中支持的大多數功能。

+2

小挑剔。 GL3與GL ES 2.0非常相似。畢竟,ES 2.0是第一個被指定的。 – Bahbar 2010-01-17 09:02:43

+0

@Bahbar我不知道爲什麼相似性應該按時間順序排列。它不是一個對稱的屬性? – 2011-10-05 12:27:18

+0

我不想建議通過GLES學習桌面GL,因爲這會帶來更多問題。 @OP查看tomriddle的答案,如果您仍然對此感興趣,並且還沒有犯錯,您可以購買一本您不打算使用的API的書籍。 – 2011-10-05 12:30:17

2

我建議學習的方式是採取固定功能程序,並慢慢開始將其轉換爲核心配置文件,每次添加每一位。基本上你需要解決3件大事,不幸的是,所有這些都相當大,並且以這種方式相互配合,以至於如果屏幕上沒有任何東西,你就不知道哪個位被破壞了。但是如果你能以正確的方式去做,你應該沒問題。

首先學習頂點緩衝區對象和頂點數組對象。溝在glBegin,glEnd,glVertex3f,glColor4f,glNormal3f,glTexCoord2f等..

瞭解手動矩陣變換溝glRotatef,glTranslate,glPushMatrix,glPopMatrix,glMatrixMode,glLoadIdentity,GL_PROJECTION,GL_MODELVIEW,glFrustum,glOrtho,gluLookAt, gluPerspective,gluOrtho2。我建議查看glm,這是OpenGL網站在其SDK中提到的。雖然您仍在使用非核心配置文件中的固定功能組件,但您可以手動將該矩陣加載到glLoadMatrixf,稍後您需要將矩陣綁定到着色器。

學習基本的GLSL着色器。不應使用gl_vertex,gl_normal,ftransform(),它們仍然適用於VBO,您可以使用它們,直到着色器綁定完全安裝。

然後執行所有着色器綁定,使用頂點屬性而不是固定的gl_vertex和gl_position。使用uniform來上傳模型視圖,然後使用投影矩陣而不是ftransform()。以及諸如燈光和材質屬性之類的東西(我傾向於上傳模型視圖投影,而不僅僅是投影,因此着色器不會每次計算)。

最後使用核心配置文件,您將需要一個支持創建一個窗口工具包。 GLUT,GLFW呢。 SMFL沒有。 SDL 1.3-dev的確如此。我不認爲pygame很遺憾。核心配置文件將丟棄任何遺留下來的棄用功能。

+1

雖然這是一個比較好的想法,但是一旦他找到了一些學習資源,它就更像是一次訓練練習,因此並沒有真正回答這個問題。 – 2011-10-05 13:24:14