Loading modules/ovis/include/opencv2/ovis.hpp +7 −1 Original line number Diff line number Diff line Loading @@ -25,7 +25,9 @@ enum SceneSettings /// draw coordinate system crosses for debugging SCENE_SHOW_CS_CROSS = 4, /// Apply anti-aliasing. The first window determines the setting for all windows. SCENE_AA = 8 SCENE_AA = 8, /// Render off-screen without a window. Allows separate AA setting. Requires manual update via @ref WindowScene::update SCENE_OFFSCREEN = 16 }; enum MaterialProperty Loading Loading @@ -276,6 +278,10 @@ public: CV_WRAP virtual void setCameraIntrinsics(InputArray K, const Size& imsize, float zNear = -1, float zFar = -1) = 0; /** * render this window, but do not swap buffers. Automatically called by @ref ovis::waitKey */ CV_WRAP virtual void update() = 0; }; /** Loading modules/ovis/src/ovis.cpp +18 −1 Original line number Diff line number Diff line Loading @@ -289,7 +289,7 @@ class WindowSceneImpl : public WindowScene Root* root; SceneManager* sceneMgr; SceneNode* camNode; RenderWindow* rWin; RenderTarget* rWin; Ptr<OgreBites::CameraMan> camman; Ptr<Rectangle2D> bgplane; std::unordered_map<AnimationState*, Controller<Real>*> frameCtrlrs; Loading Loading @@ -344,11 +344,22 @@ public: if (!app->sceneMgr) { CV_Assert((flags & SCENE_OFFSCREEN) == 0 && "off-screen rendering for main window not supported"); app->sceneMgr = sceneMgr; rWin = app->getRenderWindow(); if (camman) app->addInputListener(camman.get()); } else if (flags & SCENE_OFFSCREEN) { // render into an offscreen texture TexturePtr tex = TextureManager::getSingleton().createManual( title, RESOURCEGROUP_NAME, TEX_TYPE_2D, sz.width, sz.height, 0, PF_BYTE_RGB, TU_RENDERTARGET, NULL, false, flags & SCENE_AA ? 4 : 0); rWin = tex->getBuffer()->getRenderTarget(); rWin->setAutoUpdated(false); // only update when requested } else { OgreBites::NativeWindowPair nwin = app->createWindow(title, sz.width, sz.height); Loading Loading @@ -820,6 +831,11 @@ public: ndc = (2 * f * n) / ndc; } void update() { rWin->update(false); } void fixCameraYawAxis(bool useFixed, InputArray _up) CV_OVERRIDE { #if OGRE_VERSION >= ((1 << 16) | (11 << 8) | 5) Loading Loading @@ -923,6 +939,7 @@ public: CV_EXPORTS_W void addResourceLocation(const String& path) { CV_Assert(!_app && "must be called before the first createWindow"); _extraResourceLocations.insert(Ogre::StringUtil::normalizeFilePath(path, false)); } Loading Loading
modules/ovis/include/opencv2/ovis.hpp +7 −1 Original line number Diff line number Diff line Loading @@ -25,7 +25,9 @@ enum SceneSettings /// draw coordinate system crosses for debugging SCENE_SHOW_CS_CROSS = 4, /// Apply anti-aliasing. The first window determines the setting for all windows. SCENE_AA = 8 SCENE_AA = 8, /// Render off-screen without a window. Allows separate AA setting. Requires manual update via @ref WindowScene::update SCENE_OFFSCREEN = 16 }; enum MaterialProperty Loading Loading @@ -276,6 +278,10 @@ public: CV_WRAP virtual void setCameraIntrinsics(InputArray K, const Size& imsize, float zNear = -1, float zFar = -1) = 0; /** * render this window, but do not swap buffers. Automatically called by @ref ovis::waitKey */ CV_WRAP virtual void update() = 0; }; /** Loading
modules/ovis/src/ovis.cpp +18 −1 Original line number Diff line number Diff line Loading @@ -289,7 +289,7 @@ class WindowSceneImpl : public WindowScene Root* root; SceneManager* sceneMgr; SceneNode* camNode; RenderWindow* rWin; RenderTarget* rWin; Ptr<OgreBites::CameraMan> camman; Ptr<Rectangle2D> bgplane; std::unordered_map<AnimationState*, Controller<Real>*> frameCtrlrs; Loading Loading @@ -344,11 +344,22 @@ public: if (!app->sceneMgr) { CV_Assert((flags & SCENE_OFFSCREEN) == 0 && "off-screen rendering for main window not supported"); app->sceneMgr = sceneMgr; rWin = app->getRenderWindow(); if (camman) app->addInputListener(camman.get()); } else if (flags & SCENE_OFFSCREEN) { // render into an offscreen texture TexturePtr tex = TextureManager::getSingleton().createManual( title, RESOURCEGROUP_NAME, TEX_TYPE_2D, sz.width, sz.height, 0, PF_BYTE_RGB, TU_RENDERTARGET, NULL, false, flags & SCENE_AA ? 4 : 0); rWin = tex->getBuffer()->getRenderTarget(); rWin->setAutoUpdated(false); // only update when requested } else { OgreBites::NativeWindowPair nwin = app->createWindow(title, sz.width, sz.height); Loading Loading @@ -820,6 +831,11 @@ public: ndc = (2 * f * n) / ndc; } void update() { rWin->update(false); } void fixCameraYawAxis(bool useFixed, InputArray _up) CV_OVERRIDE { #if OGRE_VERSION >= ((1 << 16) | (11 << 8) | 5) Loading Loading @@ -923,6 +939,7 @@ public: CV_EXPORTS_W void addResourceLocation(const String& path) { CV_Assert(!_app && "must be called before the first createWindow"); _extraResourceLocations.insert(Ogre::StringUtil::normalizeFilePath(path, false)); } Loading