【发布时间】: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 吗?
标签: c++ qt opengl graphics qglwidget