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