From 8ff17ca11dd80af38c96b0b338a2eefdbfdfe8b5 Mon Sep 17 00:00:00 2001 From: Guido Ranzuglia granzuglia Date: Thu, 7 Oct 2010 14:13:14 +0000 Subject: [PATCH] added a QGLContext that could be used by filters to make GPU computation. --- src/meshlab/mainwindow_RunTime.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/meshlab/mainwindow_RunTime.cpp b/src/meshlab/mainwindow_RunTime.cpp index 48eea6323..cffc127d8 100644 --- a/src/meshlab/mainwindow_RunTime.cpp +++ b/src/meshlab/mainwindow_RunTime.cpp @@ -800,7 +800,14 @@ void MainWindow::executeFilter(QAction *action, RichParameterSet ¶ms, bool i meshDoc()->setBusy(true); RichParameterSet MergedEnvironment(params); MergedEnvironment.join(currentGlobalParams); + + //GLA() is only the parent + QGLWidget* filterWidget = new QGLWidget(GLA()); + QGLFormat defForm = QGLFormat::defaultFormat(); + iFilter->glContext = new QGLContext(defForm,filterWidget->context()->device()); + bool retres = iFilter->glContext->create(filterWidget->context()); ret=iFilter->applyFilter(action, *(meshDoc()), MergedEnvironment, QCallBack); + meshDoc()->setBusy(false); qApp->restoreOverrideCursor(); @@ -1276,10 +1283,13 @@ bool MainWindow::open(QString fileName, GLArea *gla) if(gla->mm()->cm.fn==0){ gla->setDrawMode(vcg::GLW::DMPoints); - if(!(mask & vcg::tri::io::Mask::IOM_VERTNORMAL)) gla->setLight(false); - else mm->updateDataMask(MeshModel::MM_VERTNORMAL); + if(!(mask & vcg::tri::io::Mask::IOM_VERTNORMAL)) + gla->setLight(false); + else + mm->updateDataMask(MeshModel::MM_VERTNORMAL); } - else mm->updateDataMask(MeshModel::MM_VERTNORMAL); + else + mm->updateDataMask(MeshModel::MM_VERTNORMAL); updateMenus(); int delVertNum = vcg::tri::Clean::RemoveDegenerateVertex(mm->cm);