Changeset 9554 for OpenSceneGraph/trunk/src/osgViewer/StatsHandler.cpp
- Timestamp:
- 01/27/09 14:23:20 (4 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
OpenSceneGraph/trunk/src/osgViewer/StatsHandler.cpp
r9552 r9554 25 25 #include <osg/PolygonMode> 26 26 #include <osg/Geometry> 27 #include <osgUtil/Statistics>28 27 29 28 namespace osgViewer … … 71 70 if (ea.getKey()==_keyEventTogglesOnScreenStats) 72 71 { 73 if (viewer->get Stats())72 if (viewer->getViewerStats()) 74 73 { 75 74 if (!_initialized) … … 90 89 case(NO_STATS): 91 90 { 92 viewer->get Stats()->collectStats("frame_rate",false);93 viewer->get Stats()->collectStats("event",false);94 viewer->get Stats()->collectStats("update",false);91 viewer->getViewerStats()->collectStats("frame_rate",false); 92 viewer->getViewerStats()->collectStats("event",false); 93 viewer->getViewerStats()->collectStats("update",false); 95 94 96 95 for(osgViewer::ViewerBase::Cameras::iterator itr = cameras.begin(); … … 107 106 } 108 107 109 viewer->get Stats()->collectStats("scene",false);108 viewer->getViewerStats()->collectStats("scene",false); 110 109 111 110 _camera->setNodeMask(0x0); … … 115 114 case(FRAME_RATE): 116 115 { 117 viewer->get Stats()->collectStats("frame_rate",true);116 viewer->getViewerStats()->collectStats("frame_rate",true); 118 117 119 118 _camera->setNodeMask(0xffffffff); … … 137 136 } 138 137 139 viewer->get Stats()->collectStats("event",true);140 viewer->get Stats()->collectStats("update",true);138 viewer->getViewerStats()->collectStats("event",true); 139 viewer->getViewerStats()->collectStats("update",true); 141 140 142 141 for(osgViewer::ViewerBase::Cameras::iterator itr = cameras.begin(); … … 175 174 _switch->setValue(_viewerSceneChildNum, true); 176 175 177 viewer->get Stats()->collectStats("scene",true);176 viewer->getViewerStats()->collectStats("scene",true); 178 177 179 178 break; … … 189 188 if (ea.getKey()==_keyEventPrintsOutStats) 190 189 { 191 if (viewer->get Stats())190 if (viewer->getViewerStats()) 192 191 { 193 192 osg::notify(osg::NOTICE)<<std::endl<<"Stats report:"<<std::endl; 194 193 typedef std::vector<osg::Stats*> StatsList; 195 194 StatsList statsList; 196 statsList.push_back(viewer->get Stats());195 statsList.push_back(viewer->getViewerStats()); 197 196 198 197 osgViewer::ViewerBase::Contexts contexts; … … 214 213 } 215 214 216 for(int i = viewer->get Stats()->getEarliestFrameNumber(); i<= viewer->getStats()->getLatestFrameNumber()-1; ++i)215 for(int i = viewer->getViewerStats()->getEarliestFrameNumber(); i<= viewer->getViewerStats()->getLatestFrameNumber()-1; ++i) 217 216 { 218 217 for(StatsList::iterator itr = statsList.begin(); … … 387 386 viewStr << std::setw(7) << value << std::endl; \ 388 387 else \ 389 viewStr << std::setw(7) << " no value" << std::endl; \388 viewStr << std::setw(7) << "." << std::endl; \ 390 389 391 390 double value = 0.0; … … 445 444 { 446 445 _tickLastUpdated = tick; 447 osg::ref_ptr<osg::Node> sceneRoot = _view.valid() ? _view->getScene()->getSceneData() : 0; 448 449 if (sceneRoot.valid()) 450 { 451 osgUtil::StatsVisitor statsVisitor; 452 sceneRoot->accept(statsVisitor); 453 446 osg::Stats* stats = _view->getStats(); 447 if (stats) 448 { 454 449 std::ostringstream viewStr; 455 450 viewStr.clear(); … … 466 461 viewStr << std::endl; 467 462 468 unsigned int unique_primitives = 0; 469 osgUtil::Statistics::PrimitiveCountMap::iterator pcmitr; 470 for(pcmitr = statsVisitor._uniqueStats.GetPrimitivesBegin(); 471 pcmitr != statsVisitor._uniqueStats.GetPrimitivesEnd(); 472 ++pcmitr) 463 int frameNumber = renderInfo.getState()->getFrameStamp()->getFrameNumber(); 464 // if (!(renderer->getGraphicsThreadDoesCull())) 473 465 { 474 unique_primitives += pcmitr->second;466 --frameNumber; 475 467 } 476 477 unsigned int instanced_primitives = 0; 478 for(pcmitr = statsVisitor._instancedStats.GetPrimitivesBegin(); 479 pcmitr != statsVisitor._instancedStats.GetPrimitivesEnd(); 480 ++pcmitr) 481 { 482 instanced_primitives += pcmitr->second; 483 } 484 485 viewStr << std::setw(10) << statsVisitor._statesetSet.size() << std::setw(10) << statsVisitor._numInstancedStateSet << std::endl; 486 viewStr << std::setw(10) << statsVisitor._groupSet.size() << std::setw(10) << statsVisitor._numInstancedGroup << std::endl; 487 viewStr << std::setw(10) << statsVisitor._transformSet.size() << std::setw(10) << statsVisitor._numInstancedTransform << std::endl; 488 viewStr << std::setw(10) << statsVisitor._lodSet.size() << std::setw(10) << statsVisitor._numInstancedLOD << std::endl; 489 viewStr << std::setw(10) << statsVisitor._switchSet.size() << std::setw(10) << statsVisitor._numInstancedSwitch << std::endl; 490 viewStr << std::setw(10) << statsVisitor._geodeSet.size() << std::setw(10) << statsVisitor._numInstancedGeode << std::endl; 491 viewStr << std::setw(10) << statsVisitor._drawableSet.size() << std::setw(10) << statsVisitor._numInstancedDrawable << std::endl; 492 viewStr << std::setw(10) << statsVisitor._geometrySet.size() << std::setw(10) << statsVisitor._numInstancedGeometry << std::endl; 493 viewStr << std::setw(10) << statsVisitor._uniqueStats._vertexCount << std::setw(10) << statsVisitor._instancedStats._vertexCount << std::endl; 494 viewStr << std::setw(10) << unique_primitives << std::setw(10) << instanced_primitives << std::endl; 468 469 #define STATS_ATTRIBUTE_PAIR(str1, str2) \ 470 if (stats->getAttribute(frameNumber, str1, value)) \ 471 viewStr << std::setw(10) << value; \ 472 else \ 473 viewStr << std::setw(10) << "."; \ 474 if (stats->getAttribute(frameNumber, str2, value)) \ 475 viewStr << std::setw(10) << value << std::endl; \ 476 else \ 477 viewStr << std::setw(10) << "." << std::endl; \ 478 479 double value = 0.0; 480 481 STATS_ATTRIBUTE_PAIR("Number of unique StateSet","Number of instanced Stateset") 482 STATS_ATTRIBUTE_PAIR("Number of unique Group","Number of instanced Group") 483 STATS_ATTRIBUTE_PAIR("Number of unique Transform","Number of instanced Transform") 484 STATS_ATTRIBUTE_PAIR("Number of unique LOD","Number of instanced LOD") 485 STATS_ATTRIBUTE_PAIR("Number of unique Switch","Number of instanced Switch") 486 STATS_ATTRIBUTE_PAIR("Number of unique Geode","Number of instanced Geode") 487 STATS_ATTRIBUTE_PAIR("Number of unique Drawable","Number of instanced Drawable") 488 STATS_ATTRIBUTE_PAIR("Number of unique Geometry","Number of instanced Geometry") 489 STATS_ATTRIBUTE_PAIR("Number of unique Vertices","Number of instanced Vertices") 490 STATS_ATTRIBUTE_PAIR("Number of unique Primitives","Number of instanced Primitives") 491 495 492 496 493 text->setText(viewStr.str()); … … 1051 1048 frameRateValue->setText("0.0"); 1052 1049 1053 frameRateValue->setDrawCallback(new AveragedValueTextDrawCallback(viewer->get Stats(),"Frame rate",-1, true, 1.0));1050 frameRateValue->setDrawCallback(new AveragedValueTextDrawCallback(viewer->getViewerStats(),"Frame rate",-1, true, 1.0)); 1054 1051 1055 1052 pos.y() -= characterSize*1.5f; … … 1120 1117 eventValue->setText("0.0"); 1121 1118 1122 eventValue->setDrawCallback(new AveragedValueTextDrawCallback(viewer->get Stats(),"Event traversal time taken",-1, false, 1000.0));1119 eventValue->setDrawCallback(new AveragedValueTextDrawCallback(viewer->getViewerStats(),"Event traversal time taken",-1, false, 1000.0)); 1123 1120 1124 1121 pos.x() = startBlocks; 1125 1122 osg::Geometry* geometry = createGeometry(pos, characterSize *0.8, colorUpdateAlpha, _numBlocks); 1126 geometry->setDrawCallback(new BlockDrawCallback(this, startBlocks, viewer->get Stats(), viewer->getStats(), "Event traversal begin time", "Event traversal end time", -1, _numBlocks));1123 geometry->setDrawCallback(new BlockDrawCallback(this, startBlocks, viewer->getViewerStats(), viewer->getViewerStats(), "Event traversal begin time", "Event traversal end time", -1, _numBlocks)); 1127 1124 geode->addDrawable(geometry); 1128 1125 … … 1153 1150 updateValue->setText("0.0"); 1154 1151 1155 updateValue->setDrawCallback(new AveragedValueTextDrawCallback(viewer->get Stats(),"Update traversal time taken",-1, false, 1000.0));1152 updateValue->setDrawCallback(new AveragedValueTextDrawCallback(viewer->getViewerStats(),"Update traversal time taken",-1, false, 1000.0)); 1156 1153 1157 1154 pos.x() = startBlocks; 1158 1155 osg::Geometry* geometry = createGeometry(pos, characterSize *0.8, colorUpdateAlpha, _numBlocks); 1159 geometry->setDrawCallback(new BlockDrawCallback(this, startBlocks, viewer->get Stats(), viewer->getStats(), "Update traversal begin time", "Update traversal end time", -1, _numBlocks));1156 geometry->setDrawCallback(new BlockDrawCallback(this, startBlocks, viewer->getViewerStats(), viewer->getViewerStats(), "Update traversal begin time", "Update traversal end time", -1, _numBlocks)); 1160 1157 geode->addDrawable(geometry); 1161 1158 … … 1170 1167 ++citr) 1171 1168 { 1172 group->addChild(createCameraTimeStats(font, pos, startBlocks, acquireGPUStats, characterSize, viewer->get Stats(), *citr));1169 group->addChild(createCameraTimeStats(font, pos, startBlocks, acquireGPUStats, characterSize, viewer->getViewerStats(), *citr)); 1173 1170 } 1174 1171 … … 1188 1185 1189 1186 osg::Geometry* frameMarkers = createFrameMarkers(pos, height, colourTicks, _numBlocks + 1); 1190 frameMarkers->setDrawCallback(new FrameMarkerDrawCallback(this, startBlocks, viewer->get Stats(), 0, _numBlocks + 1));1187 frameMarkers->setDrawCallback(new FrameMarkerDrawCallback(this, startBlocks, viewer->getViewerStats(), 0, _numBlocks + 1)); 1191 1188 geode->addDrawable(frameMarkers); 1192 1189 … … 1204 1201 group->addChild(statsGraph); 1205 1202 1206 statsGraph->addStatGraph(viewer->get Stats(), viewer->getStats(), colorFR, 100, "Frame rate");1207 statsGraph->addStatGraph(viewer->get Stats(), viewer->getStats(), colorEvent, 0.016, "Event traversal time taken");1208 statsGraph->addStatGraph(viewer->get Stats(), viewer->getStats(), colorUpdate, 0.016, "Update traversal time taken");1203 statsGraph->addStatGraph(viewer->getViewerStats(), viewer->getViewerStats(), colorFR, 100, "Frame rate"); 1204 statsGraph->addStatGraph(viewer->getViewerStats(), viewer->getViewerStats(), colorEvent, 0.016, "Event traversal time taken"); 1205 statsGraph->addStatGraph(viewer->getViewerStats(), viewer->getViewerStats(), colorUpdate, 0.016, "Update traversal time taken"); 1209 1206 1210 1207 for(ViewerBase::Cameras::iterator citr = cameras.begin(); … … 1212 1209 ++citr) 1213 1210 { 1214 statsGraph->addStatGraph(viewer->get Stats(), (*citr)->getStats(), colorCull, 0.016, "Cull traversal time taken");1215 statsGraph->addStatGraph(viewer->get Stats(), (*citr)->getStats(), colorDraw, 0.016, "Draw traversal time taken");1216 statsGraph->addStatGraph(viewer->get Stats(), (*citr)->getStats(), colorGPU, 0.016, "GPU draw time taken");1211 statsGraph->addStatGraph(viewer->getViewerStats(), (*citr)->getStats(), colorCull, 0.016, "Cull traversal time taken"); 1212 statsGraph->addStatGraph(viewer->getViewerStats(), (*citr)->getStats(), colorDraw, 0.016, "Draw traversal time taken"); 1213 statsGraph->addStatGraph(viewer->getViewerStats(), (*citr)->getStats(), colorGPU, 0.016, "GPU draw time taken"); 1217 1214 } 1218 1215
