Go to the documentation of this file.
   11 #include "glvertex_qt_shadereditor.h" 
   31       QStringList 
args = qApp->arguments();
 
   34       for (
int i=1; i<
args.size(); i++)
 
   35          if (
args[i].startsWith(
"--")) opt_.push_back(
args[i].mid(2));
 
   36          else if (
args[i].startsWith(
"-")) opt_.push_back(
args[i].mid(1));
 
   37          else arg_.push_back(
args[i]);
 
   70       for (
int i=0; i<
opts(); i++)
 
   75          if (opt_[i].startsWith(opt+
"="))
 
   85       for (
int i=0; i<
opts(); i++)
 
   86          if (opt_[i].startsWith(opt))
 
   87             return(opt_[i].mid(opt_[i].indexOf(
"=")+1));
 
  100    QStringList arg_, opt_;
 
  104       lgl_Qt_GLWidgetUI::initialize();
 
  109       QString compatibility = QString(
"OpenGL compatibility: ") + QString::number(0.1*
lglGetGLVersion());
 
  110       QString renderer = QString(
"OpenGL renderer: ") + 
lglGetRenderer().c_str();
 
  113       qDebug(
"%s", compatibility.toStdString().c_str());
 
  114       qDebug(
"%s", renderer.toStdString().c_str());
 
  115       qDebug(
"%s", glsl.toStdString().c_str());
 
  137    void keyPressEvent(QKeyEvent *event)
 
  141       QString key = 
event->text();
 
  144          k = key[0].toLatin1();
 
  146       Qt::KeyboardModifier shift = Qt::ShiftModifier;
 
  149       Qt::KeyboardModifier ctrl = Qt::ControlModifier;
 
  151       Qt::KeyboardModifier ctrl = Qt::MetaModifier;
 
  155          if (k!=0x11 && k!=0x1b && k!=
' ')
 
  157             if (event->modifiers() & ctrl)
 
  159                if (event->key() == Qt::Key_S)
 
  161                else if (event->key() == Qt::Key_T)
 
  163                else if (event->key() == Qt::Key_E)
 
  165                else if (event->key() == Qt::Key_P)
 
  167                else if (event->key() == Qt::Key_K)
 
  175                if (event->modifiers() & shift)
 
  184       lgl_Qt_GLWidgetUI::keyPressEvent(event);
 
  187    void keyReleaseEvent(QKeyEvent *event)
 
  191       QString key = 
event->text();
 
  194          k = key[0].toLatin1();
 
  197          if (k!=0x11 && k!=0x1b && k!=
' ')
 
  203       lgl_Qt_GLWidgetUI::keyReleaseEvent(event);
 
  206    virtual void keyPressed(
char key)
 
  211          msg = QString(
"key '")+key+
"' pressed";
 
  213          msg = QString(
"key 0x")+QString(
"%1").arg(key, 2, 16, QChar(
'0'))+
" pressed";
 
  215       qDebug(
"%s", msg.toStdString().c_str());
 
  218    virtual void keyReleased(
char key)
 
  227       if (!pixels) 
return(
false);
 
  229       bool ok = lglWritePnmImage(filename+
".ppm", pixels, width(), height(), 3);
 
  283          QDateTime t = QDateTime::currentDateTime();
 
  284          QString time = t.toString(
"yyyyMMdd_HHmmsszzz");
 
  285          capture(capture_+
"_"+time.toStdString());
 
  289    std::string capture_;
 
  306          " --help -> this message\n" 
  307          " --fullscreen -> toggle fullscreen mode\n" 
  308          " --wireframe -> toggle wireframe mode\n" 
  309          " --pause -> pause animations\n";
 
  320          "Ctrl-z: toggle Z-test\n" 
  321          "Ctrl-c: toggle back-face culling\n" 
  322          "Ctrl-b: toggle alpha blending\n" 
  323          "Ctrl-a: toggle A-test\n" 
  324          "Ctrl-w: toggle wire frame mode\n" 
  325          "Ctrl-0: black background\n" 
  326          "Ctrl-1: white background\n" 
  327          "Ctrl-2: gray background\n" 
  328          "Ctrl-o: toggle override\n" 
  329          "Ctrl-f: toggle full-screen\n" 
  330          "Ctrl-r: reset manipulator\n" 
  331          "Space: toggle animation\n" 
  333          "Ctrl-s: capture screen\n" 
  334          "Ctrl-t: toggle continuous screen capture\n" 
  335          "Ctrl-e: trigger OBJ scene export\n" 
  336          "Ctrl-p: toggle frame rate info\n" 
  337          "Ctrl-k: print key info\n";
 
  344       QString info = QString(
"Available key commands:\n\n") + 
getKeyInfo().c_str();
 
  345       if (info.endsWith(
"\n")) info.chop(1);
 
  347       qDebug(
"%s", info.toStdString().c_str());
 
  352       std::string filename = export_+
".obj";
 
  353       export_file_ = fopen(filename.c_str(), 
"wb");
 
  357          fprintf(export_file_, 
"# glVertex OBJ File\n\n");
 
  370       FILE *file = glui->export_file_;
 
  371       int *index = &glui->export_index_;
 
  372       int *nindex = &glui->export_nindex_;
 
  373       int *tindex = &glui->export_tindex_;
 
  376       if (vbo->
getName() != 
"") fprintf(file, 
" name=%s", vbo->
getName().c_str());
 
  387          fclose(export_file_);
 
  393    void printFPS(
double dt)
 
  403       static const double interval = 3;
 
  421             fps = floor(10*fps+0.5)/10;
 
  422             qDebug(
"fps = %g", fps);
 
  446    virtual void initializeOpenGL()
 
  448       lgl_Renderer::initializeOpenGL();
 
  451    virtual void renderOpenGL(
double dt)
 
  453       lgl_Renderer::renderOpenGL(dt);
 
  464    virtual void keyPressed(
char key)
 
  466       lgl_Renderer::keyPressed(key);
 
  469    virtual void keyReleased(
char key)
 
  471       lgl_Renderer::keyReleased(key);
 
  476       bool enabled = 
false;
 
  479          if (scene->supportsStereo())
 
  485             " --stereo -> enable interlaced stereo rendering\n" 
  486             " --stereo=left -> enable horizontal left stereo interlacing mode\n" 
  487             " --stereo=right -> enable horizontal right stereo interlacing mode\n" 
  488             " --stereo=top -> enable vertical top stereo interlacing mode\n" 
  489             " --stereo=bottom -> enable vertical top stereo interlacing mode\n" 
  490             " --stereobase=... -> specify distance of eye points in stereo mode\n";
 
  498    virtual std::string getKeyInfo()
 
  501       std::string info2 = lgl_Renderer::getKeyInfo();
 
  503       std::string info = info1;
 
  504       if (info2 != 
"") info += 
"\n" + info2;
 
  509    virtual void mouseClick(
double x, 
double y)
 
  511       lgl_Renderer::mouseClick(x, y);
 
  515    virtual void doubleClick(
double x, 
double y)
 
  517       lgl_Renderer::doubleClick(x, y);
 
  520    void printDoubleClickInfo()
 
  522       QString info = QString(
"Available interactions:\n\n") + getDoubleClickInfo().c_str();
 
  523       if (info.endsWith(
"\n")) info.chop(1);
 
  525       qDebug(
"%s", info.toStdString().c_str());
 
  528    void printPickInfo(
double x=0.5, 
double y=0.5)
 
  535          d = cam->unprojectViewport(x, y);
 
  539             std::string name = vbo->
getName();
 
  549    virtual void interaction()
 
  551       lgl_Renderer::interaction();
 
  554    virtual void config()
 
  565          if (mode == 
"left") smode = LGL_INTERLACE_HORIZONTAL_LEFT;
 
  566          else if (mode == 
"right") smode = LGL_INTERLACE_HORIZONTAL_RIGHT;
 
  567          else if (mode == 
"top") smode = LGL_INTERLACE_VERTICAL_TOP;
 
  568          else if (mode == 
"bottom") smode = LGL_INTERLACE_VERTICAL_BOTTOM;
 
  576             if (
lgl_Cam *cam = scene_->getCam())
 
  579                cam->setStereoBase(sbase);
 
  584    virtual int getViewportWidth() {
return(width());}
 
  585    virtual int getViewportHeight() {
return(height());}
 
  586    virtual void update() {lgl_Qt_GLUI::update();}
 
  592       printDoubleClickInfo();
 
  595       lgl_Qt_GLUI::initialize();
 
  
bool hasOption(QString opt) const
check for option
Definition: glvertex_qt_glui.h:68
 
unsigned char * lglReadRGBPixels(int x, int y, int width, int height)
read frame buffer
Definition: glvertex_api.h:856
 
virtual std::string getKeyInfo()
reimplement to show key info
Definition: glvertex_qt_glui.h:315
 
QString getOption(int i) const
get option
Definition: glvertex_qt_glui.h:62
 
void lglBeginExport(void(*callback)(LGL_VBO_TYPE *vbo, void *data), void *data, mat4 m=mat4(1))
begin scene export
Definition: glvertex_api.h:884
 
int lglGetPrimitiveCount() const
get the number of primitives contained in vbo
Definition: glvertex_core.h:1796
 
int lglGetGLVersion()
get OpenGL version
Definition: glvertex_api.h:892
 
double getOptionValue(QString opt) const
get option value
Definition: glvertex_qt_glui.h:93
 
std::string lglGetRenderer()
get OpenGL renderer
Definition: glvertex_api.h:904
 
void print(quat q, std::string name="", std::string prefix="", std::ostream &out=std::cout)
pretty print
Definition: glslmath.h:3266
 
void prepareOpenGL(double dt)
implement this method to prepare state before rendering
Definition: glvertex_qt_glui.h:258
 
lgl_Renderer()
ctor
Definition: glvertex_scene.h:675
 
void triggerExport(std::string filename, mat4 m=mat4(1))
trigger OBJ scene export on next frame
Definition: glvertex_qt_glui.h:244
 
void toggleFPS()
toggle fps printing
Definition: glvertex_qt_glui.h:251
 
int args() const
get number of arguments
Definition: glvertex_qt_glui.h:44
 
lgl_interlacing_enum
interlacing mode enum
Definition: glvertex_core.h:90
 
void lglEndExport()
end scene export
Definition: glvertex_api.h:888
 
void toggleCapture(std::string filename)
toggle capturing a screen shot series
Definition: glvertex_qt_glui.h:235
 
scene class
Definition: glvertex_scene.h:17
 
QString getArg(int i) const
get argument
Definition: glvertex_qt_glui.h:50
 
virtual std::string getUsageInfo()
reimplement to show usage info
Definition: glvertex_qt_glui.h:474
 
3D double vector
Definition: glslmath.h:372
 
Qt convenience class for multi-pass rendering.
Definition: glvertex_qt_glui.h:434
 
4x4 double matrix
Definition: glslmath.h:2116
 
void finishOpenGL(double t)
implement this method to finish OpenGL state
Definition: glvertex_qt_glui.h:277
 
std::string getName() const
get the vbo name
Definition: glvertex_core.h:203
 
LGL core.
Definition: glvertex_core.h:156
 
virtual std::string getUsageInfo()
reimplement to show usage info
Definition: glvertex_qt_glui.h:302
 
lgl_Qt_GLUI(QWidget *parent=NULL, bool core=true)
ctor
Definition: glvertex_qt_glui.h:22
 
virtual void updateOpenGL(double dt)
implement this method to update state after rendering
Definition: glvertex_qt_glui.h:456
 
bool capture(std::string filename)
capture a screen shot
Definition: glvertex_qt_glui.h:224
 
void updateOpenGL(double dt)
implement this method to update state after rendering
Definition: glvertex_qt_glui.h:266
 
LGL API: vbo class definition.
Definition: glvertex_core.h:5827
 
Qt OpenGL widget convenience class.
Definition: glvertex_qt_glui.h:17
 
camera convenience class
Definition: glvertex_cam.h:11
 
lglVBO * pickScene(vec3 o, vec3 d)
pick the actual scene
Definition: glvertex_scene.h:702
 
int opts() const
get number of options
Definition: glvertex_qt_glui.h:56
 
void setStereoMode(lgl_interlacing_enum interlacing=LGL_INTERLACE_VERTICAL_TOP)
set the stereo interlacing mode
Definition: glvertex_scene.h:711
 
int lglGetVertexCount() const
get the number of vertices contained in vbo
Definition: glvertex_core.h:1790
 
lgl_Scene * getScene()
get the actual scene
Definition: glvertex_scene.h:696
 
multi-pass renderer
Definition: glvertex_scene.h:670
 
std::string lglGetGLSLVersionString()
get GLSL version string
Definition: glvertex_api.h:488
 
QString getOptionString(QString opt) const
get option string
Definition: glvertex_qt_glui.h:83