Changeset 9554
- Timestamp:
- 01/27/09 14:23:20 (4 years ago)
- Location:
- OpenSceneGraph/trunk
- Files:
-
- 13 modified
-
include/osg/View (modified) (3 diffs)
-
include/osgViewer/CompositeViewer (modified) (2 diffs)
-
include/osgViewer/Viewer (modified) (1 diff)
-
include/osgViewer/ViewerBase (modified) (2 diffs)
-
src/osgViewer/CompositeViewer.cpp (modified) (4 diffs)
-
src/osgViewer/StatsHandler.cpp (modified) (19 diffs)
-
src/osgViewer/Viewer.cpp (modified) (4 diffs)
-
src/osgViewer/ViewerBase.cpp (modified) (3 diffs)
-
src/osgWrappers/osg/View.cpp (modified) (3 diffs)
-
src/osgWrappers/osgUtil/Statistics.cpp (modified) (2 diffs)
-
src/osgWrappers/osgViewer/CompositeViewer.cpp (modified) (3 diffs)
-
src/osgWrappers/osgViewer/Viewer.cpp (modified) (3 diffs)
-
src/osgWrappers/osgViewer/ViewerBase.cpp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
OpenSceneGraph/trunk/include/osg/View
r8624 r9554 17 17 #include <osg/Camera> 18 18 #include <osg/Light> 19 #include <osg/Stats> 19 20 20 21 #include <OpenThreads/Mutex> … … 38 39 /** Take all the settings, Camera and Slaves from the passed in view, leaving it empty. */ 39 40 virtual void take(View& rhs); 41 42 43 /** Set the Stats object used for collect various frame related timing and scene graph stats.*/ 44 void setStats(osg::Stats* stats) { _stats = stats; } 45 46 /** Get the Viewers Stats object.*/ 47 osg::Stats* getStats() { return _stats.get(); } 48 49 /** Get the Viewers Stats object.*/ 50 const osg::Stats* getStats() const { return _stats.get(); } 51 40 52 41 53 /** Options for controlling the global lighting used for the view.*/ … … 140 152 virtual osg::GraphicsOperation* createRenderer(osg::Camera*) { return 0; } 141 153 154 osg::ref_ptr<osg::Stats> _stats; 155 142 156 LightingMode _lightingMode; 143 157 osg::ref_ptr<osg::Light> _light; -
OpenSceneGraph/trunk/include/osgViewer/CompositeViewer
r8971 r9554 39 39 /** read the viewer configuration from a configuration file.*/ 40 40 bool readConfiguration(const std::string& filename); 41 42 43 /** Set the Stats object used for collect various frame related timing and scene graph stats.*/ 44 virtual void setViewerStats(osg::Stats* stats) { _stats = stats; } 45 46 /** Get the Viewers Stats object.*/ 47 virtual osg::Stats* getViewerStats() { return _stats.get(); } 48 49 /** Get the Viewers Stats object.*/ 50 virtual const osg::Stats* getViewerStats() const { return _stats.get(); } 51 41 52 42 53 void addView(osgViewer::View* view); … … 115 126 bool _firstFrame; 116 127 128 osg::ref_ptr<osg::Stats> _stats; 129 117 130 osg::Timer_t _startTick; 118 131 osg::ref_ptr<osg::FrameStamp> _frameStamp; -
OpenSceneGraph/trunk/include/osgViewer/Viewer
r8893 r9554 41 41 /** Take all the settings, Camera and Slaves from the passed in view(er), leaving it empty. */ 42 42 virtual void take(View& rhs); 43 44 45 /** Set the Stats object used for collect various frame related timing and scene graph stats.*/ 46 virtual void setViewerStats(osg::Stats* stats) { setStats(stats); } 47 48 /** Get the Viewers Stats object.*/ 49 virtual osg::Stats* getViewerStats() { return getStats(); } 50 51 /** Get the Viewers Stats object.*/ 52 virtual const osg::Stats* getViewerStats() const { return getStats(); } 53 43 54 44 55 /** read the viewer configuration from a configuration file.*/ -
OpenSceneGraph/trunk/include/osgViewer/ViewerBase
r9186 r9554 42 42 43 43 /** Set the Stats object used for collect various frame related timing and scene graph stats.*/ 44 v oid setStats(osg::Stats* stats) { _stats = stats; }44 virtual void setViewerStats(osg::Stats* stats) = 0; 45 45 46 46 /** Get the Viewers Stats object.*/ 47 osg::Stats* getStats() { return _stats.get(); }47 virtual osg::Stats* getViewerStats() = 0; 48 48 49 49 /** Get the Viewers Stats object.*/ 50 const osg::Stats* getStats() const { return _stats.get(); }50 virtual const osg::Stats* getViewerStats() const = 0; 51 51 52 52 … … 260 260 261 261 virtual void viewerInit() = 0; 262 263 264 osg::ref_ptr<osg::Stats> _stats;265 262 266 263 bool _firstFrame; -
OpenSceneGraph/trunk/src/osgViewer/CompositeViewer.cpp
r9462 r9554 73 73 _updateVisitor->setFrameStamp(_frameStamp.get()); 74 74 75 set Stats(new osg::Stats("CompsiteViewer"));75 setViewerStats(new osg::Stats("CompsiteViewer")); 76 76 } 77 77 … … 565 565 } 566 566 567 if (get Stats() && getStats()->collectStats("frame_rate"))567 if (getViewerStats() && getViewerStats()->collectStats("frame_rate")) 568 568 { 569 569 // update previous frame stats 570 570 double deltaFrameTime = _frameStamp->getReferenceTime() - prevousReferenceTime; 571 get Stats()->setAttribute(previousFrameNumber, "Frame duration", deltaFrameTime);572 get Stats()->setAttribute(previousFrameNumber, "Frame rate", 1.0/deltaFrameTime);571 getViewerStats()->setAttribute(previousFrameNumber, "Frame duration", deltaFrameTime); 572 getViewerStats()->setAttribute(previousFrameNumber, "Frame rate", 1.0/deltaFrameTime); 573 573 574 574 // update current frames stats 575 get Stats()->setAttribute(_frameStamp->getFrameNumber(), "Reference time", _frameStamp->getReferenceTime());575 getViewerStats()->setAttribute(_frameStamp->getFrameNumber(), "Reference time", _frameStamp->getReferenceTime()); 576 576 } 577 577 … … 945 945 946 946 947 if (get Stats() && getStats()->collectStats("event"))947 if (getViewerStats() && getViewerStats()->collectStats("event")) 948 948 { 949 949 double endEventTraversal = osg::Timer::instance()->delta_s(_startTick, osg::Timer::instance()->tick()); 950 950 951 951 // update current frames stats 952 get Stats()->setAttribute(_frameStamp->getFrameNumber(), "Event traversal begin time", beginEventTraversal);953 get Stats()->setAttribute(_frameStamp->getFrameNumber(), "Event traversal end time", endEventTraversal);954 get Stats()->setAttribute(_frameStamp->getFrameNumber(), "Event traversal time taken", endEventTraversal-beginEventTraversal);952 getViewerStats()->setAttribute(_frameStamp->getFrameNumber(), "Event traversal begin time", beginEventTraversal); 953 getViewerStats()->setAttribute(_frameStamp->getFrameNumber(), "Event traversal end time", endEventTraversal); 954 getViewerStats()->setAttribute(_frameStamp->getFrameNumber(), "Event traversal time taken", endEventTraversal-beginEventTraversal); 955 955 } 956 956 } … … 1035 1035 } 1036 1036 1037 if (get Stats() && getStats()->collectStats("update"))1037 if (getViewerStats() && getViewerStats()->collectStats("update")) 1038 1038 { 1039 1039 double endUpdateTraversal = osg::Timer::instance()->delta_s(_startTick, osg::Timer::instance()->tick()); 1040 1040 1041 1041 // update current frames stats 1042 get Stats()->setAttribute(_frameStamp->getFrameNumber(), "Update traversal begin time", beginUpdateTraversal);1043 get Stats()->setAttribute(_frameStamp->getFrameNumber(), "Update traversal end time", endUpdateTraversal);1044 get Stats()->setAttribute(_frameStamp->getFrameNumber(), "Update traversal time taken", endUpdateTraversal-beginUpdateTraversal);1042 getViewerStats()->setAttribute(_frameStamp->getFrameNumber(), "Update traversal begin time", beginUpdateTraversal); 1043 getViewerStats()->setAttribute(_frameStamp->getFrameNumber(), "Update traversal end time", endUpdateTraversal); 1044 getViewerStats()->setAttribute(_frameStamp->getFrameNumber(), "Update traversal time taken", endUpdateTraversal-beginUpdateTraversal); 1045 1045 } 1046 1046 -
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 -
OpenSceneGraph/trunk/src/osgViewer/Viewer.cpp
r9475 r9554 178 178 _updateVisitor->setFrameStamp(_frameStamp.get()); 179 179 180 set Stats(new osg::Stats("Viewer"));180 setViewerStats(new osg::Stats("Viewer")); 181 181 } 182 182 … … 517 517 } 518 518 519 if (get Stats() && getStats()->collectStats("frame_rate"))519 if (getViewerStats() && getViewerStats()->collectStats("frame_rate")) 520 520 { 521 521 // update previous frame stats 522 522 double deltaFrameTime = _frameStamp->getReferenceTime() - prevousReferenceTime; 523 get Stats()->setAttribute(previousFrameNumber, "Frame duration", deltaFrameTime);524 get Stats()->setAttribute(previousFrameNumber, "Frame rate", 1.0/deltaFrameTime);523 getViewerStats()->setAttribute(previousFrameNumber, "Frame duration", deltaFrameTime); 524 getViewerStats()->setAttribute(previousFrameNumber, "Frame rate", 1.0/deltaFrameTime); 525 525 526 526 // update current frames stats 527 get Stats()->setAttribute(_frameStamp->getFrameNumber(), "Reference time", _frameStamp->getReferenceTime());527 getViewerStats()->setAttribute(_frameStamp->getFrameNumber(), "Reference time", _frameStamp->getReferenceTime()); 528 528 } 529 529 … … 855 855 } 856 856 857 if (get Stats() && getStats()->collectStats("event"))857 if (getViewerStats() && getViewerStats()->collectStats("event")) 858 858 { 859 859 double endEventTraversal = osg::Timer::instance()->delta_s(_startTick, osg::Timer::instance()->tick()); 860 860 861 861 // update current frames stats 862 get Stats()->setAttribute(_frameStamp->getFrameNumber(), "Event traversal begin time", beginEventTraversal);863 get Stats()->setAttribute(_frameStamp->getFrameNumber(), "Event traversal end time", endEventTraversal);864 get Stats()->setAttribute(_frameStamp->getFrameNumber(), "Event traversal time taken", endEventTraversal-beginEventTraversal);862 getViewerStats()->setAttribute(_frameStamp->getFrameNumber(), "Event traversal begin time", beginEventTraversal); 863 getViewerStats()->setAttribute(_frameStamp->getFrameNumber(), "Event traversal end time", endEventTraversal); 864 getViewerStats()->setAttribute(_frameStamp->getFrameNumber(), "Event traversal time taken", endEventTraversal-beginEventTraversal); 865 865 } 866 866 … … 927 927 updateSlaves(); 928 928 929 if (get Stats() && getStats()->collectStats("update"))929 if (getViewerStats() && getViewerStats()->collectStats("update")) 930 930 { 931 931 double endUpdateTraversal = osg::Timer::instance()->delta_s(_startTick, osg::Timer::instance()->tick()); 932 932 933 933 // update current frames stats 934 get Stats()->setAttribute(_frameStamp->getFrameNumber(), "Update traversal begin time", beginUpdateTraversal);935 get Stats()->setAttribute(_frameStamp->getFrameNumber(), "Update traversal end time", endUpdateTraversal);936 get Stats()->setAttribute(_frameStamp->getFrameNumber(), "Update traversal time taken", endUpdateTraversal-beginUpdateTraversal);934 getViewerStats()->setAttribute(_frameStamp->getFrameNumber(), "Update traversal begin time", beginUpdateTraversal); 935 getViewerStats()->setAttribute(_frameStamp->getFrameNumber(), "Update traversal end time", endUpdateTraversal); 936 getViewerStats()->setAttribute(_frameStamp->getFrameNumber(), "Update traversal time taken", endUpdateTraversal-beginUpdateTraversal); 937 937 } 938 938 } -
OpenSceneGraph/trunk/src/osgViewer/ViewerBase.cpp
r9131 r9554 28 28 #include <osgUtil/Optimizer> 29 29 #include <osgUtil/IntersectionVisitor> 30 #include <osgUtil/Statistics> 30 31 31 32 static osg::ApplicationUsageProxy ViewerBase_e0(osg::ApplicationUsage::ENVIRONMENTAL_VARIABLE,"OSG_CONFIG_FILE <filename>","Specify a viewer configuration file to load by default."); … … 640 641 osg::FrameStamp* frameStamp = getViewerFrameStamp(); 641 642 643 if (getViewerStats() && getViewerStats()->collectStats("scene")) 644 { 645 int frameNumber = frameStamp ? frameStamp->getFrameNumber() : 0; 646 647 Views views; 648 getViews(views); 649 for(Views::iterator vitr = views.begin(); 650 vitr != views.end(); 651 ++vitr) 652 { 653 View* view = *vitr; 654 osg::Stats* stats = view->getStats(); 655 osg::Node* sceneRoot = view->getSceneData(); 656 if (sceneRoot) 657 { 658 osgUtil::StatsVisitor statsVisitor; 659 sceneRoot->accept(statsVisitor); 660 661 unsigned int unique_primitives = 0; 662 osgUtil::Statistics::PrimitiveCountMap::iterator pcmitr; 663 for(pcmitr = statsVisitor._uniqueStats.GetPrimitivesBegin(); 664 pcmitr != statsVisitor._uniqueStats.GetPrimitivesEnd(); 665 ++pcmitr) 666 { 667 unique_primitives += pcmitr->second; 668 } 669 670 stats->setAttribute(frameNumber, "Number of unique StateSet", static_cast<double>(statsVisitor._statesetSet.size())); 671 stats->setAttribute(frameNumber, "Number of unique Group", static_cast<double>(statsVisitor._groupSet.size())); 672 stats->setAttribute(frameNumber, "Number of unique Transform", static_cast<double>(statsVisitor._transformSet.size())); 673 stats->setAttribute(frameNumber, "Number of unique LOD", static_cast<double>(statsVisitor._lodSet.size())); 674 stats->setAttribute(frameNumber, "Number of unique Switch", static_cast<double>(statsVisitor._switchSet.size())); 675 stats->setAttribute(frameNumber, "Number of unique Geode", static_cast<double>(statsVisitor._geodeSet.size())); 676 stats->setAttribute(frameNumber, "Number of unique Drawable", static_cast<double>(statsVisitor._drawableSet.size())); 677 stats->setAttribute(frameNumber, "Number of unique Geometry", static_cast<double>(statsVisitor._geometrySet.size())); 678 stats->setAttribute(frameNumber, "Number of unique Vertices", static_cast<double>(statsVisitor._uniqueStats._vertexCount)); 679 stats->setAttribute(frameNumber, "Number of unique Primitives", static_cast<double>(unique_primitives)); 680 681 unsigned int instanced_primitives = 0; 682 for(pcmitr = statsVisitor._instancedStats.GetPrimitivesBegin(); 683 pcmitr != statsVisitor._instancedStats.GetPrimitivesEnd(); 684 ++pcmitr) 685 { 686 instanced_primitives += pcmitr->second; 687 } 688 689 stats->setAttribute(frameNumber, "Number of instanced Stateset", static_cast<double>(statsVisitor._numInstancedStateSet)); 690 stats->setAttribute(frameNumber, "Number of instanced Group", static_cast<double>(statsVisitor._numInstancedGroup)); 691 stats->setAttribute(frameNumber, "Number of instanced Transform", static_cast<double>(statsVisitor._numInstancedTransform)); 692 stats->setAttribute(frameNumber, "Number of instanced LOD", static_cast<double>(statsVisitor._numInstancedLOD)); 693 stats->setAttribute(frameNumber, "Number of instanced Switch", static_cast<double>(statsVisitor._numInstancedSwitch)); 694 stats->setAttribute(frameNumber, "Number of instanced Geode", static_cast<double>(statsVisitor._numInstancedGeode)); 695 stats->setAttribute(frameNumber, "Number of instanced Drawable", static_cast<double>(statsVisitor._numInstancedDrawable)); 696 stats->setAttribute(frameNumber, "Number of instanced Geometry", static_cast<double>(statsVisitor._numInstancedGeometry)); 697 stats->setAttribute(frameNumber, "Number of instanced Vertices", static_cast<double>(statsVisitor._instancedStats._vertexCount)); 698 stats->setAttribute(frameNumber, "Number of instanced Primitives", static_cast<double>(instanced_primitives)); 699 } 700 } 701 } 702 642 703 Scenes scenes; 643 704 getScenes(scenes); … … 757 818 } 758 819 759 if (get Stats() && getStats()->collectStats("update"))820 if (getViewerStats() && getViewerStats()->collectStats("update")) 760 821 { 761 822 double endRenderingTraversals = elapsedTime(); 762 823 763 824 // update current frames stats 764 get Stats()->setAttribute(frameStamp->getFrameNumber(), "Rendering traversals begin time ", beginRenderingTraversals);765 get Stats()->setAttribute(frameStamp->getFrameNumber(), "Rendering traversals end time ", endRenderingTraversals);766 get Stats()->setAttribute(frameStamp->getFrameNumber(), "Rendering traversals time taken", endRenderingTraversals-beginRenderingTraversals);767 } 768 } 769 825 getViewerStats()->setAttribute(frameStamp->getFrameNumber(), "Rendering traversals begin time ", beginRenderingTraversals); 826 getViewerStats()->setAttribute(frameStamp->getFrameNumber(), "Rendering traversals end time ", endRenderingTraversals); 827 getViewerStats()->setAttribute(frameStamp->getFrameNumber(), "Rendering traversals time taken", endRenderingTraversals-beginRenderingTraversals); 828 } 829 } 830 -
OpenSceneGraph/trunk/src/osgWrappers/osg/View.cpp
r8625 r9554 18 18 #include <osg/Matrixd> 19 19 #include <osg/Object> 20 #include <osg/Stats> 20 21 #include <osg/View> 21 22 … … 74 75 __void__take__View_R1, 75 76 "Take all the settings, Camera and Slaves from the passed in view, leaving it empty. ", 77 ""); 78 I_Method1(void, setStats, IN, osg::Stats *, stats, 79 Properties::NON_VIRTUAL, 80 __void__setStats__osg_Stats_P1, 81 "Set the Stats object used for collect various frame related timing and scene graph stats. ", 82 ""); 83 I_Method0(osg::Stats *, getStats, 84 Properties::NON_VIRTUAL, 85 __osg_Stats_P1__getStats, 86 "Get the Viewers Stats object. ", 87 ""); 88 I_Method0(const osg::Stats *, getStats, 89 Properties::NON_VIRTUAL, 90 __C5_osg_Stats_P1__getStats, 91 "Get the Viewers Stats object. ", 76 92 ""); 77 93 I_Method1(void, setLightingMode, IN, osg::View::LightingMode, lightingMode, … … 205 221 0, 206 222 __bool__removeSlave__unsigned_int); 223 I_SimpleProperty(osg::Stats *, Stats, 224 __osg_Stats_P1__getStats, 225 __void__setStats__osg_Stats_P1); 207 226 END_REFLECTOR 208 227 -
OpenSceneGraph/trunk/src/osgWrappers/osgUtil/Statistics.cpp
r9402 r9554 208 208 "", 209 209 ""); 210 I_Method0(osgUtil::Statistics::PrimitiveCountMap &, getPrimitiveCountMap, 211 Properties::NON_VIRTUAL, 212 __PrimitiveCountMap_R1__getPrimitiveCountMap, 213 "", 214 ""); 215 I_Method0(const osgUtil::Statistics::PrimitiveCountMap &, getPrimitiveCountMap, 216 Properties::NON_VIRTUAL, 217 __C5_PrimitiveCountMap_R1__getPrimitiveCountMap, 218 "", 219 ""); 210 220 I_Method0(osgUtil::Statistics::PrimitiveCountMap::iterator, GetPrimitivesBegin, 211 221 Properties::NON_VIRTUAL, 212 222 __PrimitiveCountMap_iterator__GetPrimitivesBegin, 213 " ",223 "deprecated ", 214 224 ""); 215 225 I_Method0(osgUtil::Statistics::PrimitiveCountMap::iterator, GetPrimitivesEnd, 216 226 Properties::NON_VIRTUAL, 217 227 __PrimitiveCountMap_iterator__GetPrimitivesEnd, 218 " ",228 "deprecated ", 219 229 ""); 220 230 I_SimpleProperty(int, BinNo, … … 227 237 0, 228 238 __void__setDepth__int); 239 I_SimpleProperty(osgUtil::Statistics::PrimitiveCountMap &, PrimitiveCountMap, 240 __PrimitiveCountMap_R1__getPrimitiveCountMap, 241 0); 229 242 I_SimpleProperty(osgUtil::Statistics::StatsType, Type, 230 243 0, -
OpenSceneGraph/trunk/src/osgWrappers/osgViewer/CompositeViewer.cpp
r8980 r9554 17 17 #include <osg/FrameStamp> 18 18 #include <osg/Object> 19 #include <osg/Stats> 19 20 #include <osg/Timer> 20 21 #include <osgViewer/CompositeViewer> … … 75 76 __bool__readConfiguration__C5_std_string_R1, 76 77 "read the viewer configuration from a configuration file. ", 78 ""); 79 I_Method1(void, setViewerStats, IN, osg::Stats *, stats, 80 Properties::VIRTUAL, 81 __void__setViewerStats__osg_Stats_P1, 82 "Set the Stats object used for collect various frame related timing and scene graph stats. ", 83 ""); 84 I_Method0(osg::Stats *, getViewerStats, 85 Properties::VIRTUAL, 86 __osg_Stats_P1__getViewerStats, 87 "Get the Viewers Stats object. ", 88 ""); 89 I_Method0(const osg::Stats *, getViewerStats, 90 Properties::VIRTUAL, 91 __C5_osg_Stats_P1__getViewerStats, 92 "Get the Viewers Stats object. ", 77 93 ""); 78 94 I_Method1(void, addView, IN, osgViewer::View *, view, … … 258 274 __osg_FrameStamp_P1__getViewerFrameStamp, 259 275 0); 276 I_SimpleProperty(osg::Stats *, ViewerStats, 277 __osg_Stats_P1__getViewerStats, 278 __void__setViewerStats__osg_Stats_P1); 260 279 END_REFLECTOR 261 280 -
OpenSceneGraph/trunk/src/osgWrappers/osgViewer/Viewer.cpp
r8895 r9554 18 18 #include <osg/Node> 19 19 #include <osg/Object> 20 #include <osg/Stats> 20 21 #include <osg/Timer> 21 22 #include <osgViewer/GraphicsWindow> … … 77 78 __void__take__View_R1, 78 79 "Take all the settings, Camera and Slaves from the passed in view(er), leaving it empty. ", 80 ""); 81 I_Method1(void, setViewerStats, IN, osg::Stats *, stats, 82 Properties::VIRTUAL, 83 __void__setViewerStats__osg_Stats_P1, 84 "Set the Stats object used for collect various frame related timing and scene graph stats. ", 85 ""); 86 I_Method0(osg::Stats *, getViewerStats, 87 Properties::VIRTUAL, 88 __osg_Stats_P1__getViewerStats, 89 "Get the Viewers Stats object. ", 90 ""); 91 I_Method0(const osg::Stats *, getViewerStats, 92 Properties::VIRTUAL, 93 __C5_osg_Stats_P1__getViewerStats, 94 "Get the Viewers Stats object. ", 79 95 ""); 80 96 I_Method1(bool, readConfiguration, IN, const std::string &, filename, … … 220 236 __osg_FrameStamp_P1__getViewerFrameStamp, 221 237 0); 238 I_SimpleProperty(osg::Stats *, ViewerStats, 239 __osg_Stats_P1__getViewerStats, 240 __void__setViewerStats__osg_Stats_P1); 222 241 END_REFLECTOR 223 242 -
OpenSceneGraph/trunk/src/osgWrappers/osgViewer/ViewerBase.cpp
r8895 r9554 71 71 "", 72 72 ""); 73 I_Method1(void, set Stats, IN, osg::Stats *, stats,74 Properties:: NON_VIRTUAL,75 __void__set Stats__osg_Stats_P1,73 I_Method1(void, setViewerStats, IN, osg::Stats *, stats, 74 Properties::PURE_VIRTUAL, 75 __void__setViewerStats__osg_Stats_P1, 76 76 "Set the Stats object used for collect various frame related timing and scene graph stats. ", 77 77 ""); 78 I_Method0(osg::Stats *, get Stats,79 Properties:: NON_VIRTUAL,80 __osg_Stats_P1__get Stats,78 I_Method0(osg::Stats *, getViewerStats, 79 Properties::PURE_VIRTUAL, 80 __osg_Stats_P1__getViewerStats, 81 81 "Get the Viewers Stats object. ", 82 82 ""); 83 I_Method0(const osg::Stats *, get Stats,84 Properties:: NON_VIRTUAL,85 __C5_osg_Stats_P1__get Stats,83 I_Method0(const osg::Stats *, getViewerStats, 84 Properties::PURE_VIRTUAL, 85 __C5_osg_Stats_P1__getViewerStats, 86 86 "Get the Viewers Stats object. ", 87 87 ""); … … 375 375 __bool__getReleaseContextAtEndOfFrameHint, 376 376 __void__setReleaseContextAtEndOfFrameHint__bool); 377 I_SimpleProperty(osg::Stats *, Stats,378 __osg_Stats_P1__getStats,379 __void__setStats__osg_Stats_P1);380 377 I_SimpleProperty(osgViewer::ViewerBase::ThreadingModel, ThreadingModel, 381 378 __ThreadingModel__getThreadingModel, … … 390 387 __osg_FrameStamp_P1__getViewerFrameStamp, 391 388 0); 389 I_SimpleProperty(osg::Stats *, ViewerStats, 390 __osg_Stats_P1__getViewerStats, 391 __void__setViewerStats__osg_Stats_P1); 392 392 END_REFLECTOR 393 393
