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