diff --git a/src/Gui/Thumbnail.cpp b/src/Gui/Thumbnail.cpp index 1d13bde7a93e..f946b94e7a16 100644 --- a/src/Gui/Thumbnail.cpp +++ b/src/Gui/Thumbnail.cpp @@ -134,9 +134,11 @@ void Thumbnail::RestoreDocFile(Base::Reader &reader) void Thumbnail::createThumbnailFromFramebuffer(QImage& img) const { // Alternative way of off-screen rendering - QtGLFramebufferObject fbo(this->size, this->size,QtGLFramebufferObject::Depth); if (this->viewer->isActiveWindow()) { + static_cast(this->viewer->getGLWidget())->makeCurrent(); + QtGLFramebufferObject fbo(this->size, this->size,QtGLFramebufferObject::Depth); this->viewer->renderToFramebuffer(&fbo); img = fbo.toImage(); + static_cast(this->viewer->getGLWidget())->doneCurrent(); } } diff --git a/src/Gui/View3DInventor.cpp b/src/Gui/View3DInventor.cpp index 75c69a6b22f6..d34bfa6a25c1 100644 --- a/src/Gui/View3DInventor.cpp +++ b/src/Gui/View3DInventor.cpp @@ -545,6 +545,7 @@ void View3DInventor::print(QPrinter* printer) #else QImage img; QPainter p(printer); + p.setRenderHints(QPainter::Antialiasing | QPainter::HighQualityAntialiasing); if (!p.isActive() && !printer->outputFileName().isEmpty()) { qApp->setOverrideCursor(Qt::ArrowCursor); QMessageBox::critical(this, tr("Opening file failed"), @@ -579,6 +580,8 @@ void View3DInventor::print(QPrinter* printer) void View3DInventor::previewFromFramebuffer(const QRect& rect, QImage& img) { + static_cast(_viewer->getGLWidget())->makeCurrent(); + #if QT_VERSION >= 0x040600 QtGLFramebufferObjectFormat format; format.setSamples(8); @@ -595,6 +598,8 @@ void View3DInventor::previewFromFramebuffer(const QRect& rect, QImage& img) _viewer->setBackgroundColor(col); _viewer->setGradientBackground(on); img = fbo.toImage(); + + static_cast(_viewer->getGLWidget())->doneCurrent(); } // ********************************************************************************** diff --git a/src/Gui/View3DPy.cpp b/src/Gui/View3DPy.cpp index a383db677a6c..9b141aa43be1 100644 --- a/src/Gui/View3DPy.cpp +++ b/src/Gui/View3DPy.cpp @@ -696,6 +696,9 @@ Py::Object View3DInventorPy::isAnimationEnabled(const Py::Tuple& args) void View3DInventorPy::createImageFromFramebuffer(int width, int height, const QColor& bgcolor, QImage& img) { + View3DInventorViewer* viewer = _view->getViewer(); + static_cast(viewer->getGLWidget())->makeCurrent(); + const QtGLContext* context = QtGLContext::currentContext(); if (!context) { Base::Console().Warning("createImageFromFramebuffer failed because no context is active\n"); @@ -709,18 +712,20 @@ void View3DInventorPy::createImageFromFramebuffer(int width, int height, const Q #else QtGLFramebufferObject fbo(width, height, QtGLFramebufferObject::Depth); #endif - const QColor col = _view->getViewer()->backgroundColor(); - bool on = _view->getViewer()->hasGradientBackground(); + const QColor col = viewer->backgroundColor(); + bool on = viewer->hasGradientBackground(); if (bgcolor.isValid()) { - _view->getViewer()->setBackgroundColor(bgcolor); - _view->getViewer()->setGradientBackground(false); + viewer->setBackgroundColor(bgcolor); + viewer->setGradientBackground(false); } - _view->getViewer()->renderToFramebuffer(&fbo); - _view->getViewer()->setBackgroundColor(col); - _view->getViewer()->setGradientBackground(on); + viewer->renderToFramebuffer(&fbo); + viewer->setBackgroundColor(col); + viewer->setGradientBackground(on); img = fbo.toImage(); + + static_cast(viewer->getGLWidget())->doneCurrent(); } Py::Object View3DInventorPy::saveImage(const Py::Tuple& args)