Home Download Gallery Documentation Developer

# The stereoViewer example

Simply press `S` to toggle stereo display (if supported).

This is a simple stereo application inspired from simpleViewer. The constructor is called with a QFormat stereo option to enable stereo. Press `S` to toggle stereo display.

## stereoViewer.h

    #include <QGLViewer/qglviewer.h>

    class Viewer : public QGLViewer
    {
    protected :
      virtual void draw();
      virtual void init();
      virtual QString helpString() const;
    };

## stereoViewer.cpp

    #include "stereoViewer.h"
    #include <qapplication.h>
    #include <math.h>

    using namespace std;

    void Viewer::init()
    {
      restoreStateFromFile();

      // Activate the stereo display. Press 'S' to toggle.
      setStereoDisplay(true);

      help();
    }

    QString Viewer::helpString() const
    {
      QString text("<h2>S t e r e o V i e w e r</h2>");
      text += "You can display in stereo with no change to your application, provided that your hardware supports stereo display.<br><br>";

      text += "If you get a <b>Stereo not supported on this display</b> error message, check that ";
      text += "your machine supports stereo (search for quad-buffer in <i>glxinfo</i> and find stereo glasses !).<br><br>";

      text += "You can then toggle the stereo display by pressing <b>S</b> in any application.";
      return text;
    }

    void Viewer::draw()
    {
      // Draws a spiral
      const float nbSteps = 200.0;
      glBegin(GL_QUAD_STRIP);
      for (float i=0; i<nbSteps; ++i)
        {
          float ratio = i/nbSteps;
          float angle = 21.0*ratio;
          float c = cos(angle);
          float s = sin(angle);
          float r1 = 1.0 - 0.8*ratio;
          float r2 = 0.8 - 0.8*ratio;
          float alt = ratio - 0.5;
          const float nor = 0.5;
          const float up = sqrt(1.0-nor*nor);
          glColor3f(1.0-ratio, 0.2f , ratio);
          glNormal3f(nor*c, up, nor*s);
          glVertex3f(r1*c, alt, r1*s);
          glVertex3f(r2*c, alt+0.05f, r2*s);
        }
      glEnd();

      return;
    }

## main.cpp

    #include "stereoViewer.h"
    #include <qapplication.h>

    int main(int argc, char** argv)
    {
      QApplication application(argc,argv);

      // Set the default OpenGL format with stereo capabilities.
      // An alternative is to pass this parameter to the QGLWidget constructor.
      QGLFormat format;
      format.setStereo(true);
      QGLFormat::setDefaultFormat(format);

      Viewer viewer;

      viewer.setWindowTitle("stereoViewer");

      viewer.show();

      return application.exec();
    }

Back to the examples main page.