Show
Ignore:
Timestamp:
01/26/09 22:23:09 (4 years ago)
Author:
robert
Message:

Ported onscreen camera stats across to using thread safe stats collection

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/src/osgViewer/Renderer.cpp

    r9385 r9552  
    1818#include <osgUtil/Optimizer> 
    1919#include <osgUtil/GLObjectsVisitor> 
     20#include <osgUtil/Statistics> 
    2021 
    2122#include <osgViewer/Renderer> 
     
    335336        } 
    336337 
     338        if (stats && stats->collectStats("scene")) 
     339        { 
     340            osgUtil::Statistics sceneStats; 
     341            sceneView->getStats(sceneStats); 
     342             
     343            stats->setAttribute(frameNumber, "Visible vertex count", static_cast<double>(sceneStats._vertexCount)); 
     344            stats->setAttribute(frameNumber, "Visible number of drawables", static_cast<double>(sceneStats.numDrawables)); 
     345            stats->setAttribute(frameNumber, "Visible number of lights", static_cast<double>(sceneStats.nlights)); 
     346            stats->setAttribute(frameNumber, "Visible number of render bins", static_cast<double>(sceneStats.nbins)); 
     347            stats->setAttribute(frameNumber, "Visible depth", static_cast<double>(sceneStats.depth)); 
     348            stats->setAttribute(frameNumber, "Visible number of materials", static_cast<double>(sceneStats.nummat)); 
     349            stats->setAttribute(frameNumber, "Visible number of impostors", static_cast<double>(sceneStats.nimpostor)); 
     350 
     351            osgUtil::Statistics::PrimitiveCountMap& pcm = sceneStats.getPrimitiveCountMap(); 
     352            stats->setAttribute(frameNumber, "Visible number of GL_POINTS", static_cast<double>(pcm[GL_POINTS])); 
     353            stats->setAttribute(frameNumber, "Visible number of GL_LINES", static_cast<double>(pcm[GL_LINES])); 
     354            stats->setAttribute(frameNumber, "Visible number of GL_LINE_STRIP", static_cast<double>(pcm[GL_LINE_STRIP])); 
     355            stats->setAttribute(frameNumber, "Visible number of GL_LINE_LOOP", static_cast<double>(pcm[GL_LINE_LOOP])); 
     356            stats->setAttribute(frameNumber, "Visible number of GL_TRIANGLES", static_cast<double>(pcm[GL_TRIANGLES])); 
     357            stats->setAttribute(frameNumber, "Visible number of GL_TRIANGLE_STRIP", static_cast<double>(pcm[GL_TRIANGLE_STRIP])); 
     358            stats->setAttribute(frameNumber, "Visible number of GL_TRIANGLE_FAN", static_cast<double>(pcm[GL_TRIANGLE_FAN])); 
     359            stats->setAttribute(frameNumber, "Visible number of GL_QUADS", static_cast<double>(pcm[GL_QUADS])); 
     360            stats->setAttribute(frameNumber, "Visible number of GL_QUAD_STRIP", static_cast<double>(pcm[GL_QUAD_STRIP])); 
     361            stats->setAttribute(frameNumber, "Visible number of GL_POLYGON", static_cast<double>(pcm[GL_POLYGON])); 
     362             
     363        } 
     364 
    337365        _drawQueue.add(sceneView); 
    338366 
     
    457485            stats->setAttribute(frameNumber, "Draw traversal time taken", osg::Timer::instance()->delta_s(beforeDrawTick, afterDrawTick)); 
    458486        } 
     487 
    459488    } 
    460489 
     
    518547 
    519548    osg::Timer_t afterCullTick = osg::Timer::instance()->tick(); 
     549 
     550    if (stats && stats->collectStats("scene")) 
     551    { 
     552        osgUtil::Statistics sceneStats; 
     553        sceneView->getStats(sceneStats); 
     554 
     555        stats->setAttribute(frameNumber, "Visible vertex count", static_cast<double>(sceneStats._vertexCount)); 
     556        stats->setAttribute(frameNumber, "Visible number of drawables", static_cast<double>(sceneStats.numDrawables)); 
     557        stats->setAttribute(frameNumber, "Visible number of lights", static_cast<double>(sceneStats.nlights)); 
     558        stats->setAttribute(frameNumber, "Visible number of render bins", static_cast<double>(sceneStats.nbins)); 
     559        stats->setAttribute(frameNumber, "Visible depth", static_cast<double>(sceneStats.depth)); 
     560        stats->setAttribute(frameNumber, "Visible number of materials", static_cast<double>(sceneStats.nummat)); 
     561        stats->setAttribute(frameNumber, "Visible number of impostors", static_cast<double>(sceneStats.nimpostor)); 
     562    } 
    520563 
    521564#if 0