Qt中使用OpenGL进行绘图
生活随笔
收集整理的這篇文章主要介紹了
Qt中使用OpenGL进行绘图
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Qt Creator中的3D繪圖及動畫教程(參照NeHe)
剛剛學習了Qt Creator,發(fā)現(xiàn)Qt提供了QtOpenGL模塊,對OpenGL做了不錯的封裝,這使得我們可以很輕松地在Qt程序中使用OpenGL進行繪圖渲染。雖然里面還是由不少專業(yè)的解釋照搬原文的,但還是加入了大量自己的分析。而且Qt中寫OpenGL框架上比VC簡單太多了,有不少東西都封裝優(yōu)化好了,代碼上還是由有很多區(qū)別的。當然,其中原教程沒解釋好的問題我都作了深入的解釋,以及一些多余部分解釋、代碼都被我刪掉簡化了。
這份Qt OpenGL的3D繪圖及動畫教程,我基本會按照Nehe的OpenGL教程,只是將代碼的實現(xiàn)運用到Qt Creator中,當然其中加了。
下面對Qt中OpenGL做一個簡要介紹:
Qt中OpenGL主要是在QGLWidget類中完成的,而要使用QtOpenGL模塊,需要在項目文件( .pro)中添加代碼"QT+=opengl"。
QGLWidget類是一個用來渲染OpenGL圖形的部件,提供了在Qt中顯示OpenGL圖形的功能。這個類使用起來很簡單,只需要繼承該類,然后像使用其他QWidget部件一樣來使用它。QGLWidget提供了3個方便的純虛函數(shù),可以在子類中通過重新實現(xiàn)它們來執(zhí)行典型的OpenGL任務(wù):
initializeGL():設(shè)置OpenGL渲染環(huán)境,定義顯示列表等。該函數(shù)只在第一次調(diào)用resizeGL()或paintGL()前被自動調(diào)用一次。
resizeGL():設(shè)置OpenGL的視口、投影等。每次部件改變大小時都會自動調(diào)用該函數(shù)。
paintGL():渲染OpenGL場景。每當部件需要更新時都會調(diào)用該函數(shù)。
(以上3個虛函數(shù)更具體的調(diào)用情況我會用另一篇文章來講明)
也就是說,Qt中當創(chuàng)建并顯示出一個QGLWidget子對象時,會自動依次調(diào)用initializeGL()、resizeGL()、paintGL(),完成當前場景的繪制;而當某些情況發(fā)生時,會根據(jù)情況決定是否自動調(diào)用initializeGL()、resizeGL(),一旦調(diào)用initializeGL()、resizeGL()了,會緊跟著調(diào)用paintGL()對場景進行重新繪制。
總結(jié)
以上是生活随笔為你收集整理的Qt中使用OpenGL进行绘图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springCloud - 第11篇 -
- 下一篇: 想要转人工智能,程序员该如何学习?(学习