Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
在QT的示例代码中,有一个qopenglwidget例子,展示了如何在paintGL()中插入QPainter绘制的图形。 但是当我把 void GLWidget::paintGL()中的
glDisable(GL_CULL_FACE);
注释掉的时候,QPainter绘制的气泡不再能显示出来。 paintGL()中怎么能让QPainter不受OpenGL的状态影响呢? 因为我想在paintGL()中调用osg的frame(),调用osg的frame()时,OpenGL的状态根本就控制不了。
谢谢 @kenchan 提供的思路,在paintGL开始绘制OpenGL之前,先将OpenGL状态保存,绘制完成之后,将OpenGL状态恢复。就不会造成QPainter绘制不出来的问题了。当时怎么就没想到呢,哈哈哈哈哈!
OpenGL就是一个很大的状态机。如果不恢复渲染状态的话,在驱动层执行渲染就会遇到非期望的结果。