Changeset 8429
- Timestamp:
- 06/12/08 17:56:03
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
OpenSceneGraph-TrainingMaterials/trunk/Presentations/Viewers/osgViewer.p3d
r8235 r8429 70 70 Make your lives easier 71 71 72 But... the real reason...72 And in doin so... the real reason... 73 73 74 74 MAKE MY LIFE EASIER … … 77 77 </page> 78 78 79 <!-- 80 79 81 <page inherit="middle" title="Previous viewer classes - SceneView"> 80 82 osgUtil::SceneView - "A View onto a Scene": … … 162 164 -ve Producer + osgProducer Maintaince nightmare. 163 165 </page> 166 --> 164 167 165 168 <page inherit="middle" title="osgViewer"> 166 169 Goals: 170 167 171 Extensible windowing toolkit support, Qt, WxWindows etc. 168 172 … … 172 176 173 177 Support distortion correction as part of the viewer 174 178 175 179 Unify the RTT Camera and viewer Camera classes 176 180 177 181 Unify the concepts: 178 182 Viewer "has a" Camera NOT Viewer "is a" Camera 179 Camera only takes a picture, in a viewer or in a scene 183 Camera only takes a picture, in a viewer or in 184 a scene 180 185 181 186 Make it easier: 182 187 To integrate OpenSceneGraph with existing apps 183 188 To handle mulitple views and multiple scene graphs 184 To maintain - now just 11,000 lines of code 189 To maintain - now just 11,000 lines of code vs 190 previous 27,000 lines in Producer+osgProducer 191 </page> 192 193 <page inherit="middle" title="Basic viewer setup"> 194 195 osgViewer::Viewer viewer; 196 197 viewer.setSceneData(myData) 198 199 viewer.run(); 200 </page> 201 202 <page inherit="middle" title="Viewer frame loop"> 203 204 osgViewer::Viewer viewer; 205 206 viewer.setSceneData(myData) 207 208 viewer.setCameraManipulator(new osgGA::TrackballManipulator); 209 210 viewer.realize(); 211 212 while(!viewer.done) 213 { 214 viewer.frame(); 215 } 216 </page> 217 218 <page inherit="middle" title="Viewer expanded frame loop"> 219 220 osgViewer::Viewer viewer; 221 222 viewer.setSceneData(myData) 223 224 viewer.realize(); 225 226 while(!viewer.done) 227 { 228 viewer.advance(); 229 viewer.eventTraveral(); 230 viewer.updateTraversal(); 231 232 // compute view matrix myViewMatrix 233 // ... 234 // then apply 235 viewer.getCamera()->setViewMatrix(myViewMatrix); 236 237 viewer.renderingTraversals(); 238 } 185 239 </page> 186 240 … … 214 268 osgViewer::Viewer 215 269 216 osgViewer::Comp isiteViewer270 osgViewer::CompositeViewer 217 271 </page> 218 272 … … 275 329 276 330 Sets up theading: 277 331 278 332 SingleThreaded 279 333 CullDrawThreadPerContext … … 303 357 304 358 Sets up theading (Same as Viewer): 305 359 306 360 SingleThreaded 307 361 CullDrawThreadPerContext … … 325 379 </page> 326 380 381 <page inherit="middle" title="Viewer Threading"> 382 383 Main thread: 384 385 advance() 386 eventTraveral(); 387 updateTraveral(); 388 renderingTraveral(); // sync's with rendering threads 389 390 391 Rendering threads: 392 393 SingleThreaded - main thread does cull and draw dispatch 394 395 CullDrawThreadPerContext - thread per context does 396 cull and draw dispatch 397 398 DrawThreadPerContext - main thread does culls and 399 thread per context does draw dispatch 400 401 CullThreadPerCameraDrawThreadPerContext - 402 thread per camera for cull, 403 thread per context for doing draw dispatch 404 405 406 See white board for diagrams!! 407 </page> 408 327 409 <page inherit="end" title="Conclusions"> 328 410 Delivers on goal of unification of concepts and classes
