Solved 在QOpenGLWidget上用QPainter绘制图形问题
-
在QT的示例代码中,有一个qopenglwidget例子,展示了如何在paintGL()中插入QPainter绘制的图形。
但是当我把
void GLWidget::paintGL()中的glDisable(GL_CULL_FACE);
注释掉的时候,QPainter绘制的气泡不再能显示出来。
paintGL()中怎么能让QPainter不受OpenGL的状态影响呢?
因为我想在paintGL()中调用osg的frame(),调用osg的frame()时,OpenGL的状态根本就控制不了。 -
This post is deleted! -
谢谢 @kenchan 提供的思路,在paintGL开始绘制OpenGL之前,先将OpenGL状态保存,绘制完成之后,将OpenGL状态恢复。就不会造成QPainter绘制不出来的问题了。当时怎么就没想到呢,哈哈哈哈哈!
-
OpenGL就是一个很大的状态机。如果不恢复渲染状态的话,在驱动层执行渲染就会遇到非期望的结果。