日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

qt 调用qpainter_在Qt5.4中如何实现QOpenGLWidget和QPainter混合编程

發(fā)布時(shí)間:2023/12/4 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qt 调用qpainter_在Qt5.4中如何实现QOpenGLWidget和QPainter混合编程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在Qt5.4的Example中,有一個(gè)例子qopenglwidget,介紹了QOpenGLWidget和QPainter,但是在使用過程中,需要注意哪些方面呢?我在最初使用的時(shí)候就遇到兩者不能同時(shí)使用的問題,經(jīng)過一番折騰,終于解決了該問題。下面,我將需要注意的點(diǎn)記錄下來,以便查詢。

第一種方法,也就是直接QOpenGLWidget的paintGL函數(shù)中繪制兩者,其步驟為:

void GLWidget::paintGL() {

QPainter painter;

painter.begin(this);

painter.beginNativePainting();

//繪制3D內(nèi)容

......

//注意:1、一定要釋放QOpenGLVertexArrayObject、QOpenGLBuffer、QOpenGLShaderProgram、QOpenGLTexture等;2、如果開啟深度測試,一定要關(guān)閉。例如:

m_program->release();

m_vao.release();

m_logoVbo.release();

glDisable(GL_DEPTH_TEST);

glDisable(GL_CULL_FACE);

painter.endNativePainting();

//繪制2D內(nèi)容

......

painter.end();

}

第二種方法,是在網(wǎng)上找的,其貼子地址http://blog.csdn.net/sdaujiaojiao/article/details/41898207,該貼主應(yīng)該無法使用第一種方法,所以,另辟蹊徑。現(xiàn)將方法也列出來,便于杳找,如若想詳細(xì)了解,請(qǐng)到上面的網(wǎng)址。其步驟為:首先,重載兩個(gè)函數(shù)paintGL、paintEvent;然后,就是實(shí)現(xiàn),但是這種方法需要釋放QOpenGLVertexArrayObject、QOpenGLBuffer、QOpenGLShaderProgram、QOpenGLTexture等,也不需要關(guān)閉深度測試。

void GLWidget::paintGL()

{

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

......

}

void GLWidget::paintEvent(QPaintEvent *e)

{

makeCurrent();

paintGL();

QPainter pter(this);

pter.setPen(Qt::blue);

pter.drawText(20,50,"This is a Text!");

pter.end();

update();

}

在第二種方法中,paintGL和paintEvent的調(diào)用是一一對(duì)應(yīng)的;起初,我還以為paintGL每次更新,會(huì)被調(diào)用兩次,經(jīng)過測試,其只被paintEvent函數(shù)調(diào)用一次。

兩種方法都有其優(yōu)點(diǎn),在根據(jù)需要選擇;第二種方法,比較適合擴(kuò)展,無需改動(dòng)原因的代碼,只需要重載paintEvent,并在函數(shù)中調(diào)用paintGL,并繪制2D內(nèi)容即可。

總結(jié)

以上是生活随笔為你收集整理的qt 调用qpainter_在Qt5.4中如何实现QOpenGLWidget和QPainter混合编程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。