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 ライブラリの初期化関数を呼び出すという考えは本当に好きではありません...それは機能していますが。
なにか提案を?