VolumeRendering

QGL Class Concept

Scene Graph APIs | | QGL Example

As opposed to overriding the paintEvent method inherited from QWidget, an OpenGL window needs to inherit from QGLWidget and override its paintGL method, which contains the OpenGL rendering calls for a particular 3D scene.

By starting a timer in the widget’s constructor that triggers a repaint event we get a consistent animation frame rate.

#ifndef QGLWINDOW_H
#define QGLWINDOW_H

#include <QtGui/QWidget>
#include <QtOpenGL/qgl.h>

class QGLWindow: public QGLWidget
{
public:

   static const double fps; // animated frames per second

   //! default ctor
   QGLWindow(QWidget *parent = 0)
      : QGLWidget(parent)
   {
      setFormat(QGLFormat(QGL::DoubleBuffer|QGL::DepthBuffer));

      startTimer((int)(1000.0/fps)); // ms=1000/fps
   }

   //! dtor
   ~QGLWindow()
   {}

protected:

   void initializeGL()
   {
      qglClearColor(Qt::black);
      glEnable(GL_DEPTH_TEST);
      glDisable(GL_CULL_FACE);
   }

   void resizeGL(int, int)
   {
      glViewport(0, 0, width(), height());
   }

   void paintGL();

   void timerEvent(QTimerEvent *)
   {
      repaint();
   }

};

#endif


Scene Graph APIs | | QGL Example

Options: