Dear all,
I was frustrated last night, because I failed to integrate libQGLViewer into OpenFlipper. It is just a very simple example.
Any ideas? Or, If I want to show up a new window with glutCreateWindow("demo");, where I can draw primitives using OpenGL. How can I do that?
Thanks.
//**************** caller SimpleViewer simplerviewerHelpme;
/*#if QT_VERSION < 0x040000 // Set the viewer as the application main widget. application.setMainWidget(&simplerviewer); #else simplerviewer.setWindowTitle("simpleViewer"); #endif*/
// Make the viewer window visible on screen. //simplerviewerHelpme.
//*********************** #ifndef CS554PROJ2PLUGINSIMPLEVIWER_HH #define CS554PROJ2PLUGINSIMPLEVIWER_HH
#include <QGLViewer/qglviewer.h>
class SimpleViewer : public QGLViewer { protected : virtual void draw(); virtual void init(); virtual QString helpString() const; };
#endif
//********************* #include "simpleViewer.h"
using namespace std;
// Draws a spiral void SimpleViewer::draw() { const float nbSteps = 200.0;
glBegin(GL_QUAD_STRIP); for (int i=0; i<nbSteps; ++i) { const float ratio = i/nbSteps; const float angle = 21.0*ratio; const float c = cos(angle); const float s = sin(angle); const float r1 = 1.0 - 0.8f*ratio; const float r2 = 0.8f - 0.8f*ratio; const float alt = ratio - 0.5f; const float nor = 0.5f; 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(); }
void SimpleViewer::init() { // Restore previous viewer state. restoreStateFromFile();
// Opens help window help(); }
QString SimpleViewer::helpString() const { QString text("<h2>S i m p l e V i e w e r</h2>"); text += "Use the mouse to move the camera around the object. "; text += "You can respectively revolve around, zoom and translate with the three mouse buttons. "; text += "Left and middle buttons pressed together rotate around the camera view direction axis<br><br>"; text += "Pressing <b>Alt</b> and one of the function keys (<b>F1</b>..<b>F12</b>) defines a camera keyFrame. "; text += "Simply press the function key again to restore it. Several keyFrames define a "; text += "camera path. Paths are saved when you quit the application and restored at next start.<br><br>"; text += "Press <b>F</b> to display the frame rate, <b>A</b> for the world axis, "; text += "<b>Alt+Return</b> for full screen mode and <b>Control+S</b> to save a snapshot. "; text += "See the <b>Keyboard</b> tab in this window for a complete shortcut list.<br><br>"; text += "Double clicks automates single click actions: A left button double click aligns the closer axis with the camera (if close enough). "; text += "A middle button double click fits the zoom of the camera and the right button re-centers the scene.<br><br>"; text += "A left button double click while holding right button pressed defines the camera <i>Revolve Around Point</i>. "; text += "See the <b>Mouse</b> tab and the documentation web pages for details.<br><br>"; text += "Press <b>Escape</b> to exit the viewer."; return text; }