QOPenGLWidget與QPainter混合程式設計--繪製文字
阿新 • • 發佈:2019-02-08
前言: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) ;
如果沒有做上面的工作,會有如下效果