diff --git a/modules/viz/src/vizimpl.cpp b/modules/viz/src/vizimpl.cpp index 64222b49c42a016a1bb419abf232f966480deec3..32c717c4f1f52b42b9def2828af59b0ce5c51e00 100644 --- a/modules/viz/src/vizimpl.cpp +++ b/modules/viz/src/vizimpl.cpp @@ -57,6 +57,7 @@ cv::viz::Viz3d::VizImpl::VizImpl(const String &name) : spin_once_state_(false), window_ = vtkSmartPointer::New(); cv::Vec2i window_size = cv::Vec2i(window_->GetScreenSize()) / 2; window_->SetSize(window_size.val); + window_->AddRenderer(renderer_); // Create the interactor style style_ = vtkSmartPointer::New(); @@ -107,6 +108,7 @@ void cv::viz::Viz3d::VizImpl::close() void cv::viz::Viz3d::VizImpl::recreateRenderWindow() { +#if !defined _MSC_VER //recreating is workaround for Ubuntu -- a crash in x-server Vec2i window_size(window_->GetSize()); int fullscreen = window_->GetFullScreen(); @@ -118,12 +120,7 @@ void cv::viz::Viz3d::VizImpl::recreateRenderWindow() window_->SetSize(window_size.val); window_->SetFullScreen(fullscreen); window_->AddRenderer(renderer_); - window_->AlphaBitPlanesOff(); - window_->PointSmoothingOff(); - window_->LineSmoothingOff(); - window_->PolygonSmoothingOff(); - window_->SwapBuffersOn(); - window_->SetStereoTypeToAnaglyph(); +#endif } @@ -134,6 +131,12 @@ void cv::viz::Viz3d::VizImpl::spin() interactor_ = vtkSmartPointer::New(); interactor_->SetRenderWindow(window_); interactor_->SetInteractorStyle(style_); + window_->AlphaBitPlanesOff(); + window_->PointSmoothingOff(); + window_->LineSmoothingOff(); + window_->PolygonSmoothingOff(); + window_->SwapBuffersOn(); + window_->SetStereoTypeToAnaglyph(); window_->Render(); window_->SetWindowName(window_name_.c_str()); interactor_->Start(); @@ -152,6 +155,12 @@ void cv::viz::Viz3d::VizImpl::spinOnce(int time, bool force_redraw) interactor_->SetInteractorStyle(style_); interactor_->AddObserver(vtkCommand::TimerEvent, timer_callback_); interactor_->AddObserver(vtkCommand::ExitEvent, exit_callback_); + window_->AlphaBitPlanesOff(); + window_->PointSmoothingOff(); + window_->LineSmoothingOff(); + window_->PolygonSmoothingOff(); + window_->SwapBuffersOn(); + window_->SetStereoTypeToAnaglyph(); window_->Render(); window_->SetWindowName(window_name_.c_str()); } diff --git a/modules/viz/test/tests_simple.cpp b/modules/viz/test/tests_simple.cpp index 46f0e59b53858b56b821f757bbe94acb58f0dfe5..aae468ed9e7bb6fb2de84d1fd37ddd625f7d6dcf 100644 --- a/modules/viz/test/tests_simple.cpp +++ b/modules/viz/test/tests_simple.cpp @@ -316,6 +316,8 @@ TEST(Viz, show_overlay_image) viz.getWidget("img1").cast().setImage(lena * pow(sin(i*10*CV_PI/180) * 0.5 + 0.5, 1.0)); viz.spinOnce(1, true); } + viz.showWidget("text2d", WText("Overlay images (stopped)", Point(20, 20), 20, Color::green())); + viz.spin(); } @@ -356,6 +358,7 @@ TEST(Viz, show_image_3d) viz.getWidget("img0").cast().setImage(lena * pow(sin(i++*7.5*CV_PI/180) * 0.5 + 0.5, 1.0)); viz.spinOnce(1, true); } + viz.showWidget("text2d", WText("Images in 3D (stopped)", Point(20, 20), 20, Color::green())); viz.spin(); }