void Curvature::run(GLuint nbcells_reg, GLuint nbcells_tr, GLuint* nb_triangles_regular, GLuint* nb_triangles_transition, GLuint64* sync_time) { configureProgram(); if((int)Parameters::getInstance()->g_ground_truth == 2) // glUseProgram(Parameters::getInstance()->g_programs[PROGRAM_GTCURV]); //else if((int)Parameters::getInstance()->g_ground_truth == 2) glUseProgram(Parameters::getInstance()->g_programs[PROGRAM_HIERARCHCURV]); else if((int)Parameters::getInstance()->g_ground_truth == 1) glUseProgram(Parameters::getInstance()->g_programs[PROGRAM_APPROXCURV]); glBeginQuery(GL_PRIMITIVES_GENERATED, Parameters::getInstance()->g_query[QUERY_TRIANGLES]); int res = (int)Parameters::getInstance()->g_tessel; glBindBuffer(GL_DRAW_INDIRECT_BUFFER, Parameters::getInstance()->g_buffers[BUFFER_INDIRECT_DRAWS]); glBindVertexArray (Parameters::getInstance()->g_vertex_arrays[VERTEX_ARRAY_CURVATURE]); glBindTransformFeedback(GL_TRANSFORM_FEEDBACK, Parameters::getInstance()->g_feedbacks[FEEDBACK_TRIANGULATION]); if (!Parameters::getInstance()->g_lightmode) { glBindBufferBase ( GL_TRANSFORM_FEEDBACK_BUFFER, 0u, Parameters::getInstance()->g_buffers[BUFFER_EXPORT_TGL] ); glBindBufferBase ( GL_TRANSFORM_FEEDBACK_BUFFER, 1u, Parameters::getInstance()->g_buffers[BUFFER_EXPORT_DIRMIN] ); glBindBufferBase ( GL_TRANSFORM_FEEDBACK_BUFFER, 2u, Parameters::getInstance()->g_buffers[BUFFER_EXPORT_DIRMAX] ); glBindBufferBase ( GL_TRANSFORM_FEEDBACK_BUFFER, 3u, Parameters::getInstance()->g_buffers[BUFFER_EXPORT_NORMALES] ); } glBeginTransformFeedback(GL_TRIANGLES); glMultiDrawElementsIndirect( GL_TRIANGLES, GL_UNSIGNED_INT, NULL, nbcells_reg*res*res*res, 0); glEndQuery(GL_PRIMITIVES_GENERATED); GLint64 start, stop; glGetInteger64v(GL_TIMESTAMP, &start); glGetQueryObjectuiv(Parameters::getInstance()->g_query[QUERY_TRIANGLES], GL_QUERY_RESULT, nb_triangles_regular); glGetInteger64v(GL_TIMESTAMP, &stop); //printf("After Curv %d\n", *nb_triangles_regular); *sync_time = stop - start; glBeginQuery(GL_PRIMITIVES_GENERATED, Parameters::getInstance()->g_query[QUERY_TRIANGLES]); glBindBuffer(GL_DRAW_INDIRECT_BUFFER, Parameters::getInstance()->g_buffers[BUFFER_INDIRECT_DRAWS_TR]); glBindVertexArray (Parameters::getInstance()->g_vertex_arrays[VERTEX_ARRAY_CURVATURE_TR]); glMultiDrawElementsIndirect( GL_TRIANGLES, GL_UNSIGNED_INT, NULL, nbcells_tr*res*res, 0); glEndQuery(GL_PRIMITIVES_GENERATED); glGetInteger64v(GL_TIMESTAMP, &start); glGetQueryObjectuiv(Parameters::getInstance()->g_query[QUERY_TRIANGLES], GL_QUERY_RESULT, nb_triangles_transition); glGetInteger64v(GL_TIMESTAMP, &stop); glEndTransformFeedback(); glBindTransformFeedback(GL_TRANSFORM_FEEDBACK, 0); glUseProgram(0); *sync_time += (stop - start); }
void MainWindow::createActions() { openAct = new QAction(tr("&Open"), this); openAct->setToolTip(tr("Open an image")); actionsManager->addAction(openAct, "_open", this, this, SLOT(open()), QKeySequence::Open); saveAct = new QAction(tr("&Save"), this); saveAct->setEnabled(false); actionsManager->addAction(saveAct, "_save", this, this, SLOT(save()), QKeySequence::Save); exitAct = new QAction(tr("&Exit"), this); actionsManager->addAction(exitAct, "_exit", this, this, SLOT(close()), QKeySequence::Quit); filePropertiesAct = new QAction(tr("Properties"), this); filePropertiesAct->setEnabled(false); actionsManager->addAction(filePropertiesAct, "_fileProperties", this, this, SLOT(fileProperties()), QKeySequence("Ctrl+.")); zoomInAct = new QAction(tr("Zoom In"), this); zoomInAct->setEnabled(false); actionsManager->addAction(zoomInAct, "_zoomIn", this, this, SLOT(zoomIn()), QKeySequence("+")); zoomOutAct = new QAction(tr("Zoom Out"), this); zoomOutAct->setEnabled(false); actionsManager->addAction(zoomOutAct, "_zoomOut", this, this, SLOT(zoomOut()), QKeySequence("-")); normalSizeAct = new QAction(tr("Normal Size"), this); normalSizeAct->setEnabled(false); actionsManager->addAction(normalSizeAct, "_normalSize", this, this, SLOT(normalSize()), QKeySequence("1")); adjustSizeAct = new QAction(tr("Best Fit"), this); adjustSizeAct->setEnabled(false); adjustSizeAct->setCheckable(true); actionsManager->addAction(adjustSizeAct, "_adjustSize", this, this, SLOT(adjustSizeSlot()), QKeySequence("0")); rotateRightAct = new QAction(tr("Rotate to right"), this); rotateRightAct->setToolTip(tr("Rotate image in the clockwise clock")); rotateRightAct->setEnabled(false); actionsManager->addAction(rotateRightAct, "_rotateRight", this, this, SLOT(rotateRight())); rotateLeftAct = new QAction(tr("Rotate to Left"), this); rotateLeftAct->setToolTip(tr("Rotate image counter-clockwise to clockwise")); rotateLeftAct->setEnabled(false); actionsManager->addAction(rotateLeftAct, "_rotateLeft", this, this, SLOT(rotateLeft())); flipVerticallyAct = new QAction(tr("Flip vertically"), this); flipVerticallyAct->setToolTip(tr("Turns vertically the image")); flipVerticallyAct->setEnabled(false); actionsManager->addAction(flipVerticallyAct, "_flipVertically", this, this, SLOT(flipVertically())); flipHorizontallyAct = new QAction(tr("Flip horizontally"), this); flipHorizontallyAct->setToolTip(tr("Reflects the image")); flipHorizontallyAct->setEnabled(false); actionsManager->addAction(flipHorizontallyAct, "_flipHorizontally", this, this, SLOT(flipHorizontally())); aboutAct = new QAction(tr("A&bout"), this); actionsManager->addAction(aboutAct, "_about", this, this, SLOT(about()), QKeySequence::HelpContents); nextAct = new QAction(tr("Ne&xt"), this); nextAct->setStatusTip(tr("Loads next image")); nextAct->setEnabled(false); actionsManager->addAction(nextAct, "_next", this, this, SLOT(next()), Qt::Key_Right); goFirstAct = new QAction(tr("Go to the first"), this); goFirstAct->setStatusTip(tr("Loads the first image in the folder")); goFirstAct->setEnabled(false); actionsManager->addAction(goFirstAct, "_goFirst", this, this, SLOT(goFirst()), Qt::Key_Home); prevAct = new QAction(tr("Pre&vious"), this); prevAct->setStatusTip(tr("Loads previous image")); prevAct->setEnabled(false); actionsManager->addAction(prevAct, "_previous", this, this, SLOT(previous()), Qt::Key_Left); goLastAct = new QAction(tr("Go to the last"), this); goLastAct->setStatusTip(tr("Loads the last image in the folder")); goLastAct->setEnabled(false); actionsManager->addAction(goLastAct, "_goLast", this, this, SLOT(goLast()), Qt::Key_End); openDirAct = new QAction(tr("Open &Folder"), this); openDirAct->setStatusTip("Open a folder to explore images inside it"); actionsManager->addAction(openDirAct, "_openFolder", this, this, SLOT(openDir()), QKeySequence("Ctrl+Shift+O")); showMenuBarAct = new QAction(tr("Show Menu Bar"), this); showMenuBarAct->setCheckable(true); actionsManager->addAction(showMenuBarAct, "_showMenuBar", this, this, SLOT(showMenuBar()), QKeySequence("Ctrl+M")); configAct = new QAction(tr("Configuration"), this); configAct->setEnabled(true); actionsManager->addAction(configAct, "_configuration", this, this, SLOT(configureProgram()), QKeySequence("Ctrl+C")); deleteRecentFilesAct = new QAction(tr("Delete list"), this); deleteRecentFilesAct->setIcon(QIcon::fromTheme("edit-clear")); connect(deleteRecentFilesAct, SIGNAL(triggered()), this, SLOT(deleteRecentFiles())); printAct = new QAction(tr("Print"), this); printAct->setEnabled(false); actionsManager->addAction(printAct, "_print", this, this, SLOT(print()), QKeySequence::Print); deleteFileAct = new QAction(tr("Delete"), this); deleteFileAct->setEnabled(false); deleteFileAct->setToolTip(tr("This deletes completly the file from the disk, doesn't move it to the trash")); actionsManager->addAction(deleteFileAct, "_deleteFile", this, this, SLOT(deleteFileSlot()), QKeySequence::Delete); moveToAct = new QAction(tr("Move to..."), this); moveToAct->setEnabled(false); actionsManager->addAction(moveToAct, "_moveTo", this, this, SLOT(moveToSlot())); goToAct = new QAction(tr("Go to"), this); goToAct->setEnabled(false); actionsManager->addAction(goToAct, "_goTo", this, this, SLOT(goToSlot()), QKeySequence("Ctrl+J")); configureToolBarAct = new QAction(tr("Configure toolbar"), this); actionsManager->addAction(configureToolBarAct, "_configureToolBar", this, this, SLOT(configureToolBarSlot())); //set the icons, becouse QIcon::name() was included in Qt4.7 actionsManager->setActionIcon("_about", "help-about"); actionsManager->setActionIcon("_adjustSize", "zoom-fit-best"); actionsManager->setActionIcon("_configuration", "configure"); actionsManager->setActionIcon("_deleteFile", "edit-delete"); actionsManager->setActionIcon("_exit", "application-exit"); actionsManager->setActionIcon("_fileProperties", "document-properties"); actionsManager->setActionIcon("_flipHorizontally", "object-flip-horizontal"); actionsManager->setActionIcon("_flipVertically", "object-flip-vertical"); actionsManager->setActionIcon("_goFirst", "go-first"); actionsManager->setActionIcon("_goLast", "go-last"); actionsManager->setActionIcon("_goTo", "go-jump"); actionsManager->setActionIcon("_moveTo", "none"); actionsManager->setActionIcon("_next", "go-next"); actionsManager->setActionIcon("_normalSize", "zoom-original"); actionsManager->setActionIcon("_open", "document-open"); actionsManager->setActionIcon("_openFolder", "folder-open"); actionsManager->setActionIcon("_previous", "go-previous"); actionsManager->setActionIcon("_print", "document-print"); actionsManager->setActionIcon("_rotateLeft", "object-rotate-left"); actionsManager->setActionIcon("_rotateRight", "object-rotate-right"); actionsManager->setActionIcon("_save", "document-save"); actionsManager->setActionIcon("_showMenuBar", "show-menu"); actionsManager->setActionIcon("_showToolBar", "configure-toolbars"); actionsManager->setActionIcon("_tbMovable", "configure-toolbars"); actionsManager->setActionIcon("_configureToolBar", "configure-toolbars"); actionsManager->setActionIcon("_zoomIn", "zoom-in"); actionsManager->setActionIcon("_zoomOut", "zoom-out"); }
void Curvature::loadProgram() { /*{ GLuint *program = &Parameters::getInstance()->g_programs[PROGRAM_SHADING]; fprintf (stderr, "loading shading program... "); fflush (stderr); gk::GLCompiler& c = gk::loadProgram( SHADER_PATH("shading.glsl")); //c.include(SHADER_PATH("noise.glsl") ); //c.include(SHADER_PATH("octree_common.glsl") ); //c.include(SHADER_PATH("ltree.glsl") ); c.include(SHADER_PATH("eigendecomposition.glsl")); GLProgram* tmp = c.make(); if (tmp->errors) exit(-1); *program = tmp->name; glLinkProgram (*program); load_curv(Parameters::getInstance()->g_programs[PROGRAM_SHADING], LOCATION_SHADING_SIZE); }*/ int nb_var = 7; const GLchar *varyings[] = {"geometry_position", "gl_NextBuffer", //"geometry_k1_k2", "gl_NextBuffer", "geometry_min_dir", "gl_NextBuffer", "geometry_max_dir", "gl_NextBuffer", "geometry_normale"};// "geometry_egv", "geometry_covmatDiag", "geometry_covmatUpper"}; { GLuint *program = &Parameters::getInstance()->g_programs[PROGRAM_APPROXCURV]; fprintf (stderr, "loading O(1) curv program... "); fflush (stderr); gk::GLCompiler& c = gk::loadProgram( SHADER_PATH("curvature.glsl")); c.include(SHADER_PATH("potential.glsl") ); c.include(SHADER_PATH("o1_include.glsl") ); c.include(SHADER_PATH("eigendecomposition.glsl")); GLProgram* tmp = c.make(); if (tmp->errors) exit(-1); *program = tmp->name; if (!Parameters::getInstance()->g_lightmode) glTransformFeedbackVaryings (*program, nb_var, varyings, GL_INTERLEAVED_ATTRIBS); glLinkProgram (*program); load_curv(Parameters::getInstance()->g_programs[PROGRAM_APPROXCURV], LOCATION_APPROXCURV_SIZE); } /*{ GLuint *program = &Parameters::getInstance()->g_programs[PROGRAM_GTCURV]; fprintf (stderr, "loading GT curv program... "); fflush (stderr); gk::GLCompiler& c = gk::loadProgram( SHADER_PATH("curvature.glsl")); c.include(SHADER_PATH("potential.glsl") ); c.include(SHADER_PATH("gt_include.glsl") ); c.include(SHADER_PATH("eigendecomposition.glsl")); GLProgram* tmp = c.make(); if (tmp->errors) exit(-1); *program = tmp->name; glTransformFeedbackVaryings (*program, nb_var, varyings, GL_INTERLEAVED_ATTRIBS); glLinkProgram (*program); load_curv(Parameters::getInstance()->g_programs[PROGRAM_GTCURV], LOCATION_GTCURV_SIZE); }*/ { GLuint *program = &Parameters::getInstance()->g_programs[PROGRAM_HIERARCHCURV]; fprintf (stderr, "loading hierarchic curv program... "); fflush (stderr); gk::GLCompiler& c = gk::loadProgram( SHADER_PATH("curvature.glsl")); c.include(SHADER_PATH("potential.glsl") ); c.include(SHADER_PATH("hierarch_include.glsl") ); c.include(SHADER_PATH("eigendecomposition.glsl")); GLProgram* tmp = c.make(); if (tmp->errors) exit(-1); *program = tmp->name; if (!Parameters::getInstance()->g_lightmode) glTransformFeedbackVaryings (*program, nb_var, varyings, GL_INTERLEAVED_ATTRIBS); glLinkProgram (*program); load_curv(Parameters::getInstance()->g_programs[PROGRAM_HIERARCHCURV], LOCATION_HIERARCHCURV_SIZE); } configureProgram(); }