1 #pragma once 2 3 #include <osgViewer/Viewer> 4 #include <osgViewer/ViewerEventHandlers> 5 #include <osgViewer/api/win32/GraphicsWindowWin32> 6 #include <osgGA/TrackballManipulator> 7 #include <osgGA/KeySwitchMatrixManipulator> 8 #include <osgDB/DatabasePager> 9 #include <osgDB/Registry> 10 #include <osgDB/ReadFile> 11 #include <osgUtil/Optimizer> 12 #include <string> 13 14 class cOSG 15 { 16 public: 17 cOSG(HWND hWnd); 18 ~cOSG(); 19 20 void InitOSG(std::string filename); 21 void InitManipulators(void); 22 void InitSceneGraph(void); 23 void InitCameraConfig(void); 24 void SetupWindow(void); 25 void SetupCamera(void); 26 void PreFrameUpdate(void); 27 void PostFrameUpdate(void); Done(bool value)28 void Done(bool value) { mDone = value; } Done(void)29 bool Done(void) { return mDone; } 30 //static void Render(void* ptr); 31 getViewer()32 osgViewer::Viewer* getViewer() { return mViewer; } 33 34 private: 35 bool mDone; 36 std::string m_ModelName; 37 HWND m_hWnd; 38 osgViewer::Viewer* mViewer; 39 osg::ref_ptr<osg::Group> mRoot; 40 osg::ref_ptr<osg::Node> mModel; 41 osg::ref_ptr<osgGA::TrackballManipulator> trackball; 42 osg::ref_ptr<osgGA::KeySwitchMatrixManipulator> keyswitchManipulator; 43 }; 44 45 class CRenderingThread : public OpenThreads::Thread 46 { 47 public: 48 CRenderingThread( cOSG* ptr ); 49 virtual ~CRenderingThread(); 50 51 virtual void run(); 52 53 protected: 54 cOSG* _ptr; 55 bool _done; 56 }; 57