1. 程式人生 > >【Qt OpenGL】Qt Creator中的3D繪圖及動畫教程

【Qt OpenGL】Qt Creator中的3D繪圖及動畫教程

Qt Creator中的3D繪圖及動畫教程(參照NeHe)

剛剛學習了Qt Creator,發現Qt提供了QtOpenGL模組,對OpenGL做了不錯的封裝,這使得我們可以很輕鬆地在Qt程式中使用OpenGL進行繪圖渲染。雖然裡面還是由不少專業的解釋照搬原文的,但還是加入了大量自己的分析。而且Qt中寫OpenGL框架上比VC簡單太多了,有不少東西都封裝優化好了,程式碼上還是由有很多區別的。當然,其中原教程沒解釋好的問題我都作了深入的解釋,以及一些多餘部分解釋、程式碼都被我刪掉簡化了。

這份Qt OpenGL的3D繪圖及動畫教程,我基本會按照Nehe的OpenGL教程,只是將程式碼的實現運用到Qt Creator中,當然其中加了。

下面對Qt中OpenGL做一個簡要介紹:

Qt中OpenGL主要是在QGLWidget類中完成的,而要使用QtOpenGL模組,需要在專案檔案( .pro)中新增程式碼"QT+=opengl"。

QGLWidget類是一個用來渲染OpenGL圖形的部件,提供了在Qt中顯示OpenGL圖形的功能。這個類使用起來很簡單,只需要繼承該類,然後像使用其他QWidget部件一樣來使用它。QGLWidget提供了3個方便的純虛擬函式,可以在子類中通過重新實現它們來執行典型的OpenGL任務:

initializeGL():設定OpenGL渲染環境,定義顯示列表等。該函式只在第一次呼叫resizeGL()或paintGL()前被自動呼叫

一次。

resizeGL():設定OpenGL的視口、投影等。每次部件改變大小時都會自動呼叫該函式。

paintGL():渲染OpenGL場景。每當部件需要更新時都會呼叫該函式。

(以上3個虛擬函式更具體的呼叫情況我會用另一篇文章來講明)

也就是說,Qt中當建立並顯示出一個QGLWidget子物件時,會自動依次呼叫initializeGL()、resizeGL()、paintGL(),完成當前場景的繪製;而當某些情況發生時,會根據情況決定是否自動呼叫initializeGL()、resizeGL(),一旦呼叫initializeGL()、resizeGL()了,會緊跟著呼叫paintGL()對場景進行重新繪製。

以上就是對Qt中OpenGL機制的一個簡單介紹,後面的Qt OpenGL的3D繪圖及動畫教程,我基本會按照Nehe的OpenGL教程,只是將程式碼的實現運用到Qt Creator中;教程有看不懂的,大家可以給我留言或者參考Nehe的OpenGL教程 http://www.yakergong.net/nehe/

教程目錄索引:

04:旋轉

16:霧

20:蒙板