1. 程式人生 > >QOPenGLWidget與QPainter混合程式設計--繪製文字

QOPenGLWidget與QPainter混合程式設計--繪製文字

前言:QOPenGLWidget取代了之前的QGLWidget類,用以在Qt中提供Opengl的程式設計介面。在QGLWidget類中,我們可以通過方法drawTexture來繪製文字。但是在QOPenGLWidget類的時候,這個方法沒有提供了。官方文件給出的建議是混合QPainter使用。本文件就是介紹怎麼用QPainter來在OPengl視窗上繪製2D文字

Qt使用QOpenglWidget

構建一個子類,然後過載三個函式就行,這裡不展開說,官方文件上說的很詳細。我們繪製事件不需要用paintEvent,而是直接在paintGL方法中新增如下程式碼。

//此處省略很多程式碼//
...
glDisable(GL_DEPTH_TEST); QPainter painter; painter.begin(this); QPen pen; pen.setColor(Qt::red); painter.setPen(pen); painter.drawText(100,100,"helloworld"); painter.end(); glEnable(GL_DEPTH_TEST);

效果就如下圖
這裡寫圖片描述

其他的,相信大家都看得懂,但是我要強調的是,一定要

glDisable(GL_DEPTH_TEST);//關閉更新深度緩衝區,更多資料可以查深度緩衝區

當然在繪製完成後,要

glEnable(GL_DEPTH_TEST)
;

如果沒有做上面的工作,會有如下效果
這裡寫圖片描述