似乎在initializeGL之前调用了QGLWidget的paintEvent方法,所以我应该在哪里放置openGL初始化代码?QGLWidget paintEvent:在哪里初始化openGL?
我把它放入的paintEvent方法是这样的:
void MyGLWidget::paintEvent(...)
{
makeCurrent();
..save modelview and projection matrices..
// This is initialization code
GLenum init = glewInit();
if (GLEW_OK != init)
{
/* Problem: glewInit failed, something is seriously wrong. */
qWarning() << glewGetErrorString(init);
}
// Dark blue background
glClearColor(0.2f, 0.0f, 0.5f, 0.0f);
// Enable depth test
glEnable(GL_DEPTH_TEST);
// End initialization code
... drawing code
QPainter painter(this);
...overpainting..
}
我真的不喜欢被称为每次的paintEvent上升时间我GLEW库初始化函数的想法......虽然这加工。
有什么建议吗?
之前没有调用initializeGL并从paintEvent调用updateGL? – 2012-07-18 19:37:52
如果我从paintEvent调用“updateGL”,并让initializeGL和paintGL完成这项工作,出于某种原因,屏幕呈现正常,但之后立即全部换成白色。这是为什么? – 2012-07-18 19:52:20