Made the member variables in RenderStage and RenderBin protected

This commit is contained in:
Robert Osfield
2004-08-02 12:19:50 +00:00
parent 364d40061d
commit 9b33dee6ac
10 changed files with 51 additions and 43 deletions

View File

@@ -134,8 +134,8 @@ public:
virtual void operator()(osg::Node* node, osg::NodeVisitor* nv)
{
osgUtil::CullVisitor* cullVisitor = dynamic_cast<osgUtil::CullVisitor*>(nv);
if (cullVisitor && _texture.valid() && _subgraph.valid())
osgUtil::CullVisitor* cullVisitor = dynamic_cast<osgUtil::CullVisitor*>(nv);
if (cullVisitor && _texture.valid() && _subgraph.valid())
{
_request_render_to_depth_texture(*node, *cullVisitor);
}
@@ -163,11 +163,11 @@ void RenderToTextureCallback::_request_render_to_depth_texture(osg::Node&, osgUt
// set up lighting.
// currently ignore lights in the scene graph itself..
// will do later.
osgUtil::RenderStage* previous_stage = cv.getCurrentRenderBin()->_stage;
osgUtil::RenderStage* previous_stage = cv.getCurrentRenderBin()->getStage();
// set up the background color and clear mask.
rtts->setClearMask(GL_DEPTH_BUFFER_BIT);
rtts->_colorMask = new ColorMask(false, false, false, false);
rtts->setColorMask(new ColorMask(false, false, false, false));
// set up to charge the same RenderStageLighting is the parent previous stage.
rtts->setRenderStageLighting(previous_stage->getRenderStageLighting());
@@ -219,7 +219,7 @@ void RenderToTextureCallback::_request_render_to_depth_texture(osg::Node&, osgUt
// restore the previous renderbin.
cv.setCurrentRenderBin(previousRenderBin);
if (rtts->_renderGraphList.size()==0 && rtts->_bins.size()==0)
if (rtts->getRenderGraphList().size()==0 && rtts->getRenderBinList().size()==0)
{
// getting to this point means that all the subgraph has been
// culled by small feature culling or is beyond LOD ranges.
@@ -230,7 +230,7 @@ void RenderToTextureCallback::_request_render_to_depth_texture(osg::Node&, osgUt
// and the render to texture stage to the current stages
// dependancy list.
cv.getCurrentRenderBin()->_stage->addToDependencyList(rtts.get());
cv.getCurrentRenderBin()->getStage()->addToDependencyList(rtts.get());
// if one exist attach texture to the RenderToTextureStage.
rtts->setTexture(_texture.get());

View File

@@ -185,7 +185,7 @@ void DistortionNode::preRender(osgUtil::CullVisitor& cv)
// set up lighting.
// currently ignore lights in the scene graph itself..
// will do later.
osgUtil::RenderStage* previous_stage = cv.getCurrentRenderBin()->_stage;
osgUtil::RenderStage* previous_stage = cv.getCurrentRenderBin()->getStage();
// set up the background color and clear mask.
rtts->setClearColor(osg::Vec4(0.1f,0.1f,0.3f,1.0f));
@@ -216,7 +216,7 @@ void DistortionNode::preRender(osgUtil::CullVisitor& cv)
// restore the previous renderbin.
cv.setCurrentRenderBin(previousRenderBin);
if (rtts->_renderGraphList.size()==0 && rtts->_bins.size()==0)
if (rtts->getRenderGraphList().size()==0 && rtts->getRenderBinList().size()==0)
{
// getting to this point means that all the subgraph has been
// culled by small feature culling or is beyond LOD ranges.
@@ -243,7 +243,7 @@ void DistortionNode::preRender(osgUtil::CullVisitor& cv)
// and the render to texture stage to the current stages
// dependancy list.
cv.getCurrentRenderBin()->_stage->addToDependencyList(rtts.get());
cv.getCurrentRenderBin()->getStage()->addToDependencyList(rtts.get());
// if one exist attach texture to the RenderToTextureStage.
if (_texture.valid()) rtts->setTexture(_texture.get());

View File

@@ -100,7 +100,7 @@ void MyCullCallback::doPreRender(osg::Node&, osgUtil::CullVisitor& cv)
// set up lighting.
// currently ignore lights in the scene graph itself..
// will do later.
osgUtil::RenderStage* previous_stage = cv.getCurrentRenderBin()->_stage;
osgUtil::RenderStage* previous_stage = cv.getCurrentRenderBin()->getStage();
// set up the background color and clear mask.
rtts->setClearColor(osg::Vec4(0.1f,0.1f,0.3f,1.0f));
@@ -159,7 +159,7 @@ void MyCullCallback::doPreRender(osg::Node&, osgUtil::CullVisitor& cv)
// restore the previous renderbin.
cv.setCurrentRenderBin(previousRenderBin);
if (rtts->_renderGraphList.size()==0 && rtts->_bins.size()==0)
if (rtts->getRenderGraphList().size()==0 && rtts->getRenderBinList().size()==0)
{
// getting to this point means that all the subgraph has been
// culled by small feature culling or is beyond LOD ranges.
@@ -188,7 +188,7 @@ void MyCullCallback::doPreRender(osg::Node&, osgUtil::CullVisitor& cv)
// and the render to texture stage to the current stages
// dependancy list.
cv.getCurrentRenderBin()->_stage->addToDependencyList(rtts.get());
cv.getCurrentRenderBin()->getStage()->addToDependencyList(rtts.get());
// if one exist attach texture to the RenderToTextureStage.
if (_texture.valid()) rtts->setTexture(_texture.get());

View File

@@ -163,7 +163,7 @@ void PrerenderCullCallback::doPreRender(osg::Node& /*node*/, osgUtil::CullVisito
// set up lighting.
// currently ignore lights in the scene graph itself..
// will do later.
osgUtil::RenderStage* previous_stage = cv.getCurrentRenderBin()->_stage;
osgUtil::RenderStage* previous_stage = cv.getCurrentRenderBin()->getStage();
// set up the background color and clear mask.
rtts->setClearColor(_clearColor);
@@ -221,7 +221,7 @@ void PrerenderCullCallback::doPreRender(osg::Node& /*node*/, osgUtil::CullVisito
// restore the previous renderbin.
cv.setCurrentRenderBin(previousRenderBin);
if (rtts->_renderGraphList.size()==0 && rtts->_bins.size()==0)
if (rtts->getRenderGraphList().size()==0 && rtts->getRenderBinList().size()==0)
{
// getting to this point means that all the subgraph has been
// culled by small feature culling or is beyond LOD ranges.
@@ -247,7 +247,7 @@ void PrerenderCullCallback::doPreRender(osg::Node& /*node*/, osgUtil::CullVisito
// and the render to texture stage to the current stages
// dependancy list.
cv.getCurrentRenderBin()->_stage->addToDependencyList(rtts.get());
cv.getCurrentRenderBin()->getStage()->addToDependencyList(rtts.get());
// if one exist attach image to the RenderToTextureStage.
// if (image.valid()) rtts->setImage(_image.get());

View File

@@ -79,11 +79,11 @@ void CreateShadowTextureCullCallback::doPreRender(osg::Node& node, osgUtil::Cull
// set up lighting.
// currently ignore lights in the scene graph itself..
// will do later.
osgUtil::RenderStage* previous_stage = cv.getCurrentRenderBin()->_stage;
osgUtil::RenderStage* previous_stage = cv.getCurrentRenderBin()->getStage();
// set up the background color and clear mask.
rtts->setClearColor(osg::Vec4(1.0f,1.0f,1.0f,1.0f));
rtts->setClearMask(previous_stage->getClearMask());
//rtts->setClearMask(previous_stage->getClearMask());
// set up to charge the same RenderStageLighting is the parent previous stage.
rtts->setRenderStageLighting(previous_stage->getRenderStageLighting());
@@ -160,7 +160,7 @@ void CreateShadowTextureCullCallback::doPreRender(osg::Node& node, osgUtil::Cull
// restore the previous renderbin.
cv.setCurrentRenderBin(previousRenderBin);
if (rtts->_renderGraphList.size()==0 && rtts->_bins.size()==0)
if (rtts->getRenderGraphList().size()==0 && rtts->getRenderBinList().size()==0)
{
// getting to this point means that all the shadower has been
// culled by small feature culling or is beyond LOD ranges.
@@ -189,7 +189,7 @@ void CreateShadowTextureCullCallback::doPreRender(osg::Node& node, osgUtil::Cull
// and the render to texture stage to the current stages
// dependancy list.
cv.getCurrentRenderBin()->_stage->addToDependencyList(rtts.get());
cv.getCurrentRenderBin()->getStage()->addToDependencyList(rtts.get());
// if one exist attach texture to the RenderToTextureStage.
if (_texture.valid()) rtts->setTexture(_texture.get());

View File

@@ -107,7 +107,7 @@ class OSGUTIL_EXPORT CullVisitor : public osg::NodeVisitor, public osg::CullStac
{
if (_currentRenderGraph->_stateset->useRenderBinDetails())
{
_currentRenderBin = _currentRenderBin->_parent;
_currentRenderBin = _currentRenderBin->getParent();
}
_currentRenderGraph = _currentRenderGraph->_parent;
}
@@ -351,13 +351,13 @@ inline void CullVisitor::addDrawableAndDepth(osg::Drawable* drawable,osg::RefMat
/** Add an attribute which is positioned related to the modelview matrix.*/
inline void CullVisitor::addPositionedAttribute(osg::RefMatrix* matrix,const osg::StateAttribute* attr)
{
_currentRenderBin->_stage->addPositionedAttribute(matrix,attr);
_currentRenderBin->getStage()->addPositionedAttribute(matrix,attr);
}
/** Add an attribute which is positioned related to the modelview matrix.*/
inline void CullVisitor::addPositionedTextureAttribute(unsigned int textureUnit, osg::RefMatrix* matrix,const osg::StateAttribute* attr)
{
_currentRenderBin->_stage->addPositionedTextureAttribute(textureUnit,matrix,attr);
_currentRenderBin->getStage()->addPositionedTextureAttribute(textureUnit,matrix,attr);
}
inline RenderLeaf* CullVisitor::createOrReuseRenderLeaf(osg::Drawable* drawable,osg::RefMatrix* projection,osg::RefMatrix* matrix, float depth)

View File

@@ -62,6 +62,22 @@ class OSGUTIL_EXPORT RenderBin : public osg::Object
virtual void reset();
RenderBin* getParent() { return _parent; }
const RenderBin* getParent() const { return _parent; }
RenderStage* getStage() { return _stage; }
const RenderStage* getStage() const { return _stage; }
RenderGraphList& getRenderGraphList() { return _renderGraphList; }
const RenderGraphList& getRenderGraphList() const { return _renderGraphList; }
RenderBinList& getRenderBinList() { return _bins; }
const RenderBinList& getRenderBinList() const { return _bins; }
RenderLeafList& getRenderLeafList() { return _renderLeafList; }
const RenderLeafList& getRenderLeafList() const { return _renderLeafList; }
RenderBin* find_or_insert(int binNum,const std::string& binName);
void addRenderGraph(RenderGraph* rg)
@@ -104,16 +120,16 @@ class OSGUTIL_EXPORT RenderBin : public osg::Object
DrawCallback* getDrawCallback() { return _drawCallback.get(); }
const DrawCallback* getDrawCallback() const { return _drawCallback.get(); }
/** extract stats for current draw list. */
bool getStats(Statistics* primStats);
void getPrims(Statistics* primStats);
bool getPrims(Statistics* primStats, int nbin);
#ifndef USE_DEPRECATED_API
protected:
#endif
public:
virtual ~RenderBin();
void copyLeavesFromRenderGraphListToRenderLeafList();
@@ -130,9 +146,6 @@ class OSGUTIL_EXPORT RenderBin : public osg::Object
osg::ref_ptr<DrawCallback> _drawCallback;
protected:
virtual ~RenderBin();
};

View File

@@ -133,8 +133,12 @@ class OSGUTIL_EXPORT RenderStage : public RenderBin
/** extract stats for current draw list. */
bool getStats(Statistics* primStats);
public:
#ifndef USE_DEPRECATED_API
protected:
#endif
virtual ~RenderStage();
typedef std::vector< osg::ref_ptr<RenderStage> > DependencyList;
bool _stageDrawnThisFrame;
@@ -152,9 +156,7 @@ class OSGUTIL_EXPORT RenderStage : public RenderBin
mutable osg::ref_ptr<RenderStageLighting> _renderStageLighting;
protected:
virtual ~RenderStage();
};

View File

@@ -131,15 +131,8 @@ class OSGUTIL_EXPORT SceneView : public osg::Referenced, public osg::CullSetting
osg::StateSet* getLocalStateSet() { return _localStateSet.get(); }
const osg::StateSet* getLocalStateSet() const { return _localStateSet.get(); }
#if 1
typedef Options LightingMode;
#else
enum LightingMode {
HEADLIGHT, // default
SKY_LIGHT,
NO_SCENEVIEW_LIGHT
};
#endif
void setLightingMode(LightingMode mode) { _lightingMode=mode; }
LightingMode getLightingMode() const { return _lightingMode; }

View File

@@ -1202,7 +1202,7 @@ ImpostorSprite* CullVisitor::createImpostorSprite(Impostor& node)
// set up lighting.
// currently ignore lights in the scene graph itself..
// will do later.
RenderStage* previous_stage = _currentRenderBin->_stage;
RenderStage* previous_stage = _currentRenderBin->getStage();
// set up the background color and clear mask.
osg::Vec4 clear_color = previous_stage->getClearColor();
@@ -1330,7 +1330,7 @@ ImpostorSprite* CullVisitor::createImpostorSprite(Impostor& node)
if (rtts->_renderGraphList.size()==0 && rtts->_bins.size()==0)
if (rtts->getRenderGraphList().size()==0 && rtts->getRenderBinList().size()==0)
{
// getting to this point means that all the subgraph has been
// culled by small feature culling or is beyond LOD ranges.
@@ -1475,7 +1475,7 @@ ImpostorSprite* CullVisitor::createImpostorSprite(Impostor& node)
// and the render to texture stage to the current stages
// dependancy list.
_currentRenderBin->_stage->addToDependencyList(rtts.get());
_currentRenderBin->getStage()->addToDependencyList(rtts.get());
// attach texture to the RenderToTextureStage.
rtts->setTexture(texture);