paintEvent中的Qt QPainter消除了用paintGL绘制的图形
Posted
技术标签:
【中文标题】paintEvent中的Qt QPainter消除了用paintGL绘制的图形【英文标题】:Qt QPainter in paintEvent eliminates the graphic drawn with paintGL 【发布时间】:2012-07-17 21:31:11 【问题描述】:我有以下代码
void QMyWidget::paintEvent(QPaintEvent *event)
updateGL(); // This calls for initializeGL and then paintGL and draws a nice openGL 3D scene
QPainter painter(this);
// Draw something with QPainter..
问题在于QPainter
行多次调用initializeGL 和paintGL 并最终在我的OpenGL 渲染场景上创建一个空白/灰色区域。如果我尝试使用QPainter
绘制类似drawText
的东西,显示了文本,但文本的背景是一个灰色矩形,完全覆盖了我的 OpenGL 绘制场景。
这是怎么回事?
【问题讨论】:
如果你调用“updateGL();”会发生什么在“QPainterpainter(this);”之后? 有一个闪烁,我可以看到我的 3D 场景渲染,然后整个场景变白,QPainter 的内容被渲染而不是 3D 场景 提供附加信息:如果我使用 QPainter 画家; (没有选择设备)一切正常。似乎是 QPainter 画家(这个);在处理之前清除渲染的帧缓冲区 恐怕有些 VBO/VAO 没有解绑或解绑太多次(而且搞砸了),有人可以告诉我如何解绑 VBO 和 VAO 吗? 【参考方案1】:已解决:多通道渲染已停用,因此场景被多次渲染
【讨论】:
以上是关于paintEvent中的Qt QPainter消除了用paintGL绘制的图形的主要内容,如果未能解决你的问题,请参考以下文章
Qt 5.10 中的 QPainter::drawImage() 故障
QT利用Qpainter怎么在多个窗口中画图 一般只能在paintEvent函数中为主窗口绘图 那怎么样在函数中