Renderer
Go to the documentation of this file.
/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
*
* This library is open source and may be redistributed and/or modified under
* the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
* (at your option) any later version. The full license is in LICENSE file
* included with this distribution, and on the openscenegraph.org website.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* OpenSceneGraph Public License for more details.
*/
#ifndef OSGVIEWER_RENDERER
#define OSGVIEWER_RENDERER 1
#include <OpenThreads/Condition>
#include <osg/Timer>
#include <osgDB/DatabasePager>
#include <osgUtil/SceneView>
#include <osgViewer/Export>
namespace osgViewer {
class OSGVIEWER_EXPORT OpenGLQuerySupport : public osg::Referenced
{
public:
OpenGLQuerySupport();
virtual void checkQuery(osg::Stats* stats, osg::State* state,
osg::Timer_t startTick) = 0;
virtual void beginQuery(unsigned int frameNumber, osg::State* state) = 0;
virtual void endQuery(osg::State* state) = 0;
virtual void initialize(osg::State* state, osg::Timer_t startTick);
protected:
const osg::GLExtensions* _extensions;
};
class OSGVIEWER_EXPORT Renderer : public osg::GraphicsOperation
{
public:
Renderer(osg::Camera* camera);
osgUtil::SceneView* getSceneView(unsigned int i) { return _sceneView[i].get(); }
const osgUtil::SceneView* getSceneView(unsigned int i) const { return _sceneView[i].get(); }
void setDone(bool done) { _done = done; }
bool getDone() { return _done; }
void setGraphicsThreadDoesCull(bool flag);
bool getGraphicsThreadDoesCull() const { return _graphicsThreadDoesCull; }
virtual void cull();
virtual void draw();
virtual void cull_draw();
virtual void compile();
virtual void resizeGLObjectBuffers(unsigned int maxSize);
virtual void releaseGLObjects(osg::State* = 0) const;
void setCompileOnNextDraw(bool flag) { _compileOnNextDraw = flag; }
bool getCompileOnNextDraw() const { return _compileOnNextDraw; }
virtual void operator () (osg::Object* object);
virtual void operator () (osg::GraphicsContext* context);
virtual void release();
virtual void reset();
void setCameraRequiresSetUp(bool flag);
bool getCameraRequiresSetUp() const;
protected:
void initialize(osg::State* state);
virtual ~Renderer();
virtual void updateSceneView(osgUtil::SceneView* sceneView);
osg::observer_ptr<osg::Camera> _camera;
bool _done;
bool _graphicsThreadDoesCull;
bool _compileOnNextDraw;
bool _serializeDraw;
osg::ref_ptr<osgUtil::SceneView> _sceneView[2];
struct OSGVIEWER_EXPORT ThreadSafeQueue
{
OpenThreads::Mutex _mutex;
OpenThreads::Condition _cond;
typedef std::list<osgUtil::SceneView*> SceneViewList;
SceneViewList _queue;
bool _isReleased;
ThreadSafeQueue();
~ThreadSafeQueue();
void release();
void reset();
osgUtil::SceneView* takeFront();
void add(osgUtil::SceneView* sv);
};
ThreadSafeQueue _availableQueue;
ThreadSafeQueue _drawQueue;
bool _initialized;
osg::ref_ptr<OpenGLQuerySupport> _querySupport;
osg::Timer_t _startTick;
};
}
#endif
Condition
DatabasePager
SceneView
Timer
OpenThreads::Condition
This class provides an object-oriented thread condition interface.
Definition Condition:32
OpenThreads::Mutex
This class provides an object-oriented thread mutex interface.
Definition Mutex:31
osgUtil::SceneView
Definition SceneView:37
osgViewer::OpenGLQuerySupport::initialize
virtual void initialize(osg::State *state, osg::Timer_t startTick)
osgViewer::OpenGLQuerySupport::beginQuery
virtual void beginQuery(unsigned int frameNumber, osg::State *state)=0
osgViewer::OpenGLQuerySupport::checkQuery
virtual void checkQuery(osg::Stats *stats, osg::State *state, osg::Timer_t startTick)=0
osgViewer::OpenGLQuerySupport::_extensions
const osg::GLExtensions * _extensions
Definition Renderer:38
osgViewer::OpenGLQuerySupport::endQuery
virtual void endQuery(osg::State *state)=0
osgViewer::OpenGLQuerySupport::OpenGLQuerySupport
OpenGLQuerySupport()
osgViewer::Renderer::setCameraRequiresSetUp
void setCameraRequiresSetUp(bool flag)
osgViewer::Renderer::~Renderer
virtual ~Renderer()
osgViewer::Renderer::reset
virtual void reset()
osgViewer::Renderer::_drawQueue
ThreadSafeQueue _drawQueue
Definition Renderer:122
osgViewer::Renderer::_done
bool _done
Definition Renderer:89
osgViewer::Renderer::getCompileOnNextDraw
bool getCompileOnNextDraw() const
Definition Renderer:67
osgViewer::Renderer::compile
virtual void compile()
osgViewer::Renderer::resizeGLObjectBuffers
virtual void resizeGLObjectBuffers(unsigned int maxSize)
osgViewer::Renderer::_graphicsThreadDoesCull
bool _graphicsThreadDoesCull
Definition Renderer:90
osgViewer::Renderer::setDone
void setDone(bool done)
Definition Renderer:50
osgViewer::Renderer::setCompileOnNextDraw
void setCompileOnNextDraw(bool flag)
Definition Renderer:66
osgViewer::Renderer::getSceneView
const osgUtil::SceneView * getSceneView(unsigned int i) const
Definition Renderer:48
osgViewer::Renderer::updateSceneView
virtual void updateSceneView(osgUtil::SceneView *sceneView)
osgViewer::Renderer::_querySupport
osg::ref_ptr< OpenGLQuerySupport > _querySupport
Definition Renderer:125
osgViewer::Renderer::cull
virtual void cull()
osgViewer::Renderer::_serializeDraw
bool _serializeDraw
Definition Renderer:92
osgViewer::Renderer::Renderer
Renderer(osg::Camera *camera)
osgViewer::Renderer::getSceneView
osgUtil::SceneView * getSceneView(unsigned int i)
Definition Renderer:47
osgViewer::Renderer::getGraphicsThreadDoesCull
bool getGraphicsThreadDoesCull() const
Definition Renderer:54
osgViewer::Renderer::_camera
osg::observer_ptr< osg::Camera > _camera
Definition Renderer:87
osgViewer::Renderer::getDone
bool getDone()
Definition Renderer:51
osgViewer::Renderer::_startTick
osg::Timer_t _startTick
Definition Renderer:126
osgViewer::Renderer::_sceneView
osg::ref_ptr< osgUtil::SceneView > _sceneView[2]
Definition Renderer:94
osgViewer::Renderer::releaseGLObjects
virtual void releaseGLObjects(osg::State *=0) const
osgViewer::Renderer::draw
virtual void draw()
osgViewer::Renderer::release
virtual void release()
osgViewer::Renderer::initialize
void initialize(osg::State *state)
osgViewer::Renderer::_availableQueue
ThreadSafeQueue _availableQueue
Definition Renderer:121
osgViewer::Renderer::_compileOnNextDraw
bool _compileOnNextDraw
Definition Renderer:91
osgViewer::Renderer::getCameraRequiresSetUp
bool getCameraRequiresSetUp() const
osgViewer::Renderer::cull_draw
virtual void cull_draw()
osgViewer::Renderer::_initialized
bool _initialized
Definition Renderer:124
osgViewer::Renderer::setGraphicsThreadDoesCull
void setGraphicsThreadDoesCull(bool flag)
osg::Camera
Definition Camera:45
osg::GLExtensions
Definition GLExtensions:169
osg::GraphicsContext
Definition GraphicsContext:30
osg::Object
Definition Object:61
osg::Referenced
Definition Referenced:44
osg::State
Definition State:80
osg::Stats
Definition Stats:29
osg::observer_ptr
Definition observer_ptr:39
osg::ref_ptr
Definition ref_ptr:32
osgViewer
osg::Timer_t
unsigned long long Timer_t
Definition Timer:24
Export
OSGVIEWER_EXPORT
#define OSGVIEWER_EXPORT
Definition osgViewer/Export:40
osgViewer::Renderer::ThreadSafeQueue
Definition Renderer:97
osgViewer::Renderer::ThreadSafeQueue::_queue
SceneViewList _queue
Definition Renderer:101
osgViewer::Renderer::ThreadSafeQueue::release
void release()
osgViewer::Renderer::ThreadSafeQueue::~ThreadSafeQueue
~ThreadSafeQueue()
osgViewer::Renderer::ThreadSafeQueue::add
void add(osgUtil::SceneView *sv)
osgViewer::Renderer::ThreadSafeQueue::SceneViewList
std::list< osgUtil::SceneView * > SceneViewList
Definition Renderer:100
osgViewer::Renderer::ThreadSafeQueue::ThreadSafeQueue
ThreadSafeQueue()
osgViewer::Renderer::ThreadSafeQueue::reset
void reset()
osgViewer::Renderer::ThreadSafeQueue::_mutex
OpenThreads::Mutex _mutex
Definition Renderer:98
osgViewer::Renderer::ThreadSafeQueue::takeFront
osgUtil::SceneView * takeFront()
osgViewer::Renderer::ThreadSafeQueue::_isReleased
bool _isReleased
Definition Renderer:102
osgViewer::Renderer::ThreadSafeQueue::_cond
OpenThreads::Condition _cond
Definition Renderer:99
osg::GraphicsOperation
Definition GraphicsThread:36