- Timestamp:
- 06/02/07 17:31:21 (6 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
OpenSceneGraph/trunk/examples/osgviewerWX/osgviewerWX.cpp
r6813 r6815 11 11 12 12 #include "osgviewerWX.h" 13 14 15 #include <osgViewer/StatsHandler> 13 16 #include <osgGA/TrackballManipulator> 14 17 #include <osgDB/ReadFile> … … 25 28 // create osg canvas 26 29 // - initialize 27 SimpleViewerWX *viewerWindow = new SimpleViewerWX(frame, wxID_ANY, wxDefaultPosition, 28 wxSize(200, 200), wxSUNKEN_BORDER); 30 31 32 int width = 800; 33 int height = 600; 34 35 GraphicsWindowWX* gw = new GraphicsWindowWX(frame, wxID_ANY, wxDefaultPosition, 36 wxSize(width, height), wxSUNKEN_BORDER); 37 38 39 osgViewer::Viewer *viewer = new osgViewer::Viewer; 40 viewer->getCamera()->setGraphicsContext(gw); 41 viewer->getCamera()->setViewport(0,0,width,height); 42 viewer->addEventHandler(new osgViewer::StatsHandler); 43 viewer->setThreadingModel(osgViewer::Viewer::SingleThreaded); 29 44 30 45 // load the scene. … … 34 49 return false; 35 50 } 36 viewerWindow->setSceneData(loadedModel.get()); 37 viewerWindow->setCameraManipulator(new osgGA::TrackballManipulator); 38 39 frame->SetSimpleViewer(viewerWindow); 51 52 viewer->setSceneData(loadedModel.get()); 53 viewer->setCameraManipulator(new osgGA::TrackballManipulator); 54 55 frame->SetViewer(viewer); 40 56 41 57 /* Show the frame */ … … 56 72 : wxFrame(frame, wxID_ANY, title, pos, size, style) 57 73 { 58 _viewerWindow = NULL; 59 } 60 61 void MainFrame::SetSimpleViewer(SimpleViewerWX *viewer) 62 { 63 _viewerWindow = viewer; 74 } 75 76 void MainFrame::SetViewer(osgViewer::Viewer *viewer) 77 { 78 _viewer = viewer; 64 79 } 65 80 66 81 void MainFrame::OnIdle(wxIdleEvent &event) 67 82 { 68 _viewerWindow->render(); 83 _viewer->frame(); 84 69 85 event.RequestMore(); 70 86 } … … 85 101 // default cursor to standard 86 102 _oldCursor = *wxSTANDARD_CURSOR; 103 104 _traits = new GraphicsContext::Traits; 105 _traits->x = pos.x; 106 _traits->y = pos.y; 107 _traits->width = size.x; 108 _traits->height = size.y; 109 110 init(); 111 112 } 113 114 void GraphicsWindowWX::init() 115 { 116 if (valid()) 117 { 118 setState( new osg::State ); 119 getState()->setGraphicsContext(this); 120 121 if (_traits.valid() && _traits->sharedContext) 122 { 123 getState()->setContextID( _traits->sharedContext->getState()->getContextID() ); 124 incrementContextIDUsageCount( getState()->getContextID() ); 125 } 126 else 127 { 128 getState()->setContextID( osg::GraphicsContext::createNewContextID() ); 129 } 130 } 87 131 } 88 132 … … 108 152 // update the window dimensions, in case the window has been resized. 109 153 getEventQueue()->windowResize(0, 0, width, height); 154 resized(0,0,width,height); 110 155 } 111 156 … … 117 162 void GraphicsWindowWX::OnKeyDown(wxKeyEvent &event) 118 163 { 164 #if 1 165 int key = event.GetUnicodeKey(); 166 #else 119 167 int key = event.GetKeyCode(); 120 getEventQueue()->keyPress(key); 168 #endif 169 getEventQueue()->keyPress(key); 121 170 122 171 // propagate event … … 126 175 void GraphicsWindowWX::OnKeyUp(wxKeyEvent &event) 127 176 { 177 #if 1 178 int key = event.GetUnicodeKey(); 179 #else 128 180 int key = event.GetKeyCode(); 181 #endif 129 182 getEventQueue()->keyRelease(key); 130 183
