Added support for tracking the time since the last clear() call to enable other

classes to be able to find out how long the current graphics frame has been running.
This commit is contained in:
Robert Osfield
2009-03-12 15:18:51 +00:00
parent 5a537261a6
commit c3fc21fa82
2 changed files with 11 additions and 2 deletions

View File

@@ -16,6 +16,8 @@
#include <osg/State>
#include <osg/GraphicsThread>
#include <osg/Timer>
#include <vector>
namespace osg {
@@ -328,6 +330,8 @@ class OSG_EXPORT GraphicsContext : public Object
* Note, must only be called from a thread with this context current.*/
virtual void clear();
double getTimeSinceLastClear() const { return osg::Timer::instance()->delta_s(_lastClearTick, osg::Timer::instance()->tick()); }
/** Realize the GraphicsContext.*/
bool realize();
@@ -496,6 +500,7 @@ class OSG_EXPORT GraphicsContext : public Object
ref_ptr<ResizedCallback> _resizedCallback;
Timer_t _lastClearTick;
};

View File

@@ -382,7 +382,8 @@ GraphicsContext* GraphicsContext::getCompileContext(unsigned int contextID)
GraphicsContext::GraphicsContext():
_clearColor(osg::Vec4(0.0f,0.0f,0.0f,1.0f)),
_clearMask(0),
_threadOfLastMakeCurrent(0)
_threadOfLastMakeCurrent(0),
_lastClearTick(0)
{
setThreadSafeRefUnref(true);
_operationsBlock = new RefBlock;
@@ -393,7 +394,8 @@ GraphicsContext::GraphicsContext():
GraphicsContext::GraphicsContext(const GraphicsContext&, const osg::CopyOp&):
_clearColor(osg::Vec4(0.0f,0.0f,0.0f,1.0f)),
_clearMask(0),
_threadOfLastMakeCurrent(0)
_threadOfLastMakeCurrent(0),
_lastClearTick(0)
{
setThreadSafeRefUnref(true);
_operationsBlock = new RefBlock;
@@ -410,6 +412,8 @@ GraphicsContext::~GraphicsContext()
void GraphicsContext::clear()
{
_lastClearTick = osg::Timer::instance()->tick();
if (_clearMask==0 || !_traits) return;
glViewport(0, 0, _traits->width, _traits->height);