Modified Files:
simgear/scene/model/SGClipGroup.cxx simgear/scene/model/SGClipGroup.hxx Update the clip group.
This commit is contained in:
@@ -52,15 +52,15 @@ public:
|
|||||||
{
|
{
|
||||||
osg::State* state = renderInfo.getState();
|
osg::State* state = renderInfo.getState();
|
||||||
|
|
||||||
glPushAttrib(GL_TRANSFORM_BIT);
|
|
||||||
|
|
||||||
state->applyModelViewMatrix(mModelView.get());
|
state->applyModelViewMatrix(mModelView.get());
|
||||||
for (unsigned i = 0; i < mClipPlanes.size(); ++i)
|
for (unsigned i = 0; i < mClipPlanes.size(); ++i) {
|
||||||
mClipPlanes[i]->apply(*state);
|
osg::StateAttribute::GLMode planeNum;
|
||||||
|
planeNum = GL_CLIP_PLANE0 + mClipPlanes[i]->getClipPlaneNum();
|
||||||
|
state->applyMode(planeNum, false);
|
||||||
|
glClipPlane(planeNum, mClipPlanes[i]->getClipPlane().ptr());
|
||||||
|
}
|
||||||
|
|
||||||
osgUtil::RenderBin::drawImplementation(renderInfo, previous);
|
osgUtil::RenderBin::drawImplementation(renderInfo, previous);
|
||||||
|
|
||||||
glPopAttrib();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void reset()
|
virtual void reset()
|
||||||
@@ -110,6 +110,15 @@ SGClipGroup::SGClipGroup()
|
|||||||
setCullCallback(new CullCallback);
|
setCullCallback(new CullCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SGClipGroup::SGClipGroup(const SGClipGroup& clip, const osg::CopyOp& copyop) :
|
||||||
|
osg::Group(clip, copyop)
|
||||||
|
{
|
||||||
|
for (unsigned i = 0; i < mClipPlanes.size(); ++i) {
|
||||||
|
osg::StateAttribute* sa = copyop(mClipPlanes[i].get());
|
||||||
|
mClipPlanes.push_back(static_cast<osg::ClipPlane*>(sa));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
osg::BoundingSphere
|
osg::BoundingSphere
|
||||||
SGClipGroup::computeBound() const
|
SGClipGroup::computeBound() const
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -33,6 +33,9 @@
|
|||||||
class SGClipGroup : public osg::Group {
|
class SGClipGroup : public osg::Group {
|
||||||
public:
|
public:
|
||||||
SGClipGroup();
|
SGClipGroup();
|
||||||
|
SGClipGroup(const SGClipGroup&,
|
||||||
|
const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY);
|
||||||
|
META_Node(simgear, SGClipGroup);
|
||||||
|
|
||||||
virtual osg::BoundingSphere computeBound() const;
|
virtual osg::BoundingSphere computeBound() const;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user