在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就是一个很大的状态机。如果不恢复渲染状态的话,在驱动层执行渲染就会遇到非期望的结果。


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.