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; }
Hi, sorry for the late answer. The mainwindow of OpenFlipper is a centrel part of the framework, that is used by various plugins and the rendering nodes. So it is generally a bad idea to replace it. In general this is also not necessary, as it already sets up the context and provides controls to modify it (e.g. multisampling). If you want to render primitives, which are not provided by the already existing object types, you can implement your own objecttype along with a scenegraph node (see e.g. plane object). If you want to write state of the art OpenGL rendering, you might want to look at the new rendering interface. An example is the Plugin-Render-ShaderPipeline. Best, Jan Am 08.04.2013 19:00, schrieb ???:
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; }
_______________________________________________ Openflipper mailing list Openflipper@lists.rwth-aachen.de http://mailman.rwth-aachen.de/mailman/listinfo/openflipper
-- Dipl.Inform. Jan Möbius Department of Computer Science VIII Aachen University of Technology (RWTH) Ahornstrasse 55, 52074 Aachen, Germany Phone ++49 (0)241 80-21817 Fax ++49 (0)241 80-22899 mailto:moebius@cs.rwth-aachen.de http://www.rwth-graphics.de
participants (2)
-
Jan Möbius
-
刘先勇