Home | Documentation | Download | Screenshots | Developper |
Simply press S to toggle stereo display (architecture dependent)
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.
#include "qglviewer.h" class Viewer : public QGLViewer { public : Viewer(const QGLFormat& format); protected : void draw(); void help(); };
#include "stereoViewer.h" #include <qapplication.h> int main(int argc, char** argv) { // Read command lines arguments. QApplication application(argc,argv); // Instantiate the viewer with a stereo OpenGl context. QGLFormat format; format.setStereo( TRUE ); Viewer viewer(format); // Make the viewer window visible on screen. viewer.show(); // Set the viewer as the application main widget. application.setMainWidget(&viewer); // Run main loop. return application.exec(); }
#include "stereoViewer.h" #include <qapplication.h> #include <math.h> using namespace std; // Constructor must call the base class constructor. // See the QT man page for details on QGLFormat. Viewer::Viewer(const QGLFormat& format) : QGLViewer(format) { // Activate the stereo display. Press 's' to toggle. setStereoDisplay(true); help(); } void Viewer::help() { cout << endl << "\t\t- - S t e r e o V i e w e r - -" << endl << endl; cout << "The display of your application with 3D stereo vision does not require" << endl; cout << "any change in your code. The draw() function is unchanged." << endl << endl; cout << "If you get a \"Stereo not supported on this display\" error message, check that" << endl; cout << "your machine supports stereo (search for quad-buffer in glxinfo and find stereo glasses!)" << endl; cout << "Send an e-mail if you were able to run other stereo applications." << endl << endl; cout << "Press 'S' to toggle the stereo display." << endl << endl; } void Viewer::draw() { // Draws a spiral const float nbSteps = 500.0; glBegin(GL_QUAD_STRIP); for (float i=0; i<nbSteps; ++i) { float ratio = i/nbSteps; float angle = 20.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 = .5; const float up = sqrt(1.0-nor*nor); glColor3f(1-ratio, .2 , ratio); glNormal3f(nor*c, up, nor*s); glVertex3f(r1*c, alt, r1*s); glVertex3f(r2*c, alt+0.05, r2*s); } glEnd(); return; }
Back to the main page