OpenGLで簡単なシーンを描いています。QGLWidget をサブクラス化し、paintGL() をオーバーライドしました。そこには空想はありません:
void CGLWidget::paintGL()
{
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt (120.0, 160.0, -300.0, 0.0 + 120.0, 0.0 + 160.0, 2.0 - 300.0, 0.0, 1.0, 0.0);
glScalef(1.0f/300.0f, 1.0f/300.0f, 1.0f/300.0f);
glClear(GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(80.0, width()/(double)height(), 5.0, 100000.0);
glMatrixMode(GL_MODELVIEW);
glBegin(GL_POINTS);
glColor3f(1.0f,0.6f,0.0f);
glVertex3d(x, y, z);
// ...drawing some more points...
glEnd();
}
updateGL()
メイン ウィンドウに GL ウィジェットをトリガーするタイマーがあります。paintGL()
呼び出されることを確認しました。ただし、画面上の実際の画像が更新されることはほとんどありません。ウィンドウのサイズを変更しても、シーンが更新されません。それはなぜですか、どうすれば強制的に更新できますか?