Qt中使用OpenGL进行绘图
生活随笔
收集整理的這篇文章主要介紹了
Qt中使用OpenGL进行绘图
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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进行绘图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springCloud - 第11篇 -
- 下一篇: 想要转人工智能,程序员该如何学习?(学习