似乎QGLWidget的paintEvent方法是在initializeGL之前调用的,那么我应该把我的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 库初始化函数的想法......虽然这很有效。
有什么建议吗?