似乎在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