在Qt编程中,有时会有这样一种场景:用OpenGL显示了一个3维立体图,但是想在右下角画一个2D的表格,里面写上几个字。那么这个时候就会出现QPainter与OpenGL共用或者说2D、3D共用。但是问题是调用了QPainter,drawline之后呢,OPenGL的状态被清空了丢失了,3D不显示了。
在OpenGL ES2.0里面,是支持这种方式的,OpenGL ES 3.0不支持了。Qt资料截图:
第一种方法:有人建议在GLWidget的paintEvent事件处理,然后把paintGL()放到里面去调用,然后再widget->Update()进行刷新,但我没有试出来。
第二种方法:当你想混合两者时,需要在painter->beginNativePainting()和painter->endNativePaiuting()之间封装OpenGL基元调用。不能正常work。
paintGL()
{QPainter painter(this);//painter.draw();painter.beginNativePainting();//Opengl apipainte