Thanks for the quick reply. This is definetly not an indexing problem. Starting bg removeDrawables from 1 was on purpose since starting from 0 didn't work. Do you have an idea what else could go wrong?

Robert Osfield schrieb:
Hi Martin,

In general you shouldn't remove items from the scene during the cull traversal. If you app is running single thread you sometime can get away with it, but its not something to do routinely and when you do it you have be very very careful to invalidate any iterators held by calling methods.

In your case doing the removeDrawables is probably having problems with deleting more objects that their are in the array. If you want to remove all drawables, then you should use removeDrawable(0, getNumDrawables()) NOT removeDrawable(1, getNumDrawables()) as the OSG like C and C++ indexes everything relative to 0.

As for culling, culling doesn't normally mean deleting, it usually would entail not traversing a subgraph so just don't call the apply on the node visitor.

Robert.

On 5/10/07, *Martin Weier* <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote:

    I have a problem with removing drawables from a geode. I created a
    class
    which inherits from osg::Geode. In my class I overwrite the accept
    method. The goal is to implement my own culling mechanism. So I
    check if
    the node visitor is a cullvisitor. Then I want to remove all drawables
    and add new ones, depending on the camera position.
    The Code looks like this.

    void WWOsgNode::accept(osg::NodeVisitor &nv)
    {
    if( nv.getVisitorType() == nv.CULL_VISITOR)
       {
       printf("I am a cull Vistor\n");

        try {
        this->removeDrawables(1,this->getNumDrawables());
       }
        catch(...)
       {
       printf("Something wrong while removing stuff\n");
       }

       printf("Number of drawables in Displaylist:
    %d\n",this->getNumDrawables());
       ...
    }

    this crashes the program. The program runs when I remove the
    removeDrawables call. I already tried to iterate over all drawables
    removing everyone with removeDrawable. This causes the same
    problems. I
    can provide a backtrace if this helps. My OpenSceneGraph version
    is 1.2
    on Ubuntu Feisty compiled from source. I tried other version of
    OpenSceneGraph so I guess I am doing something wrong.
    What am I missing?
    I hope somebody can help

    Martin
    _______________________________________________
    osg-users mailing list
    [email protected] <mailto:[email protected]>
    http://openscenegraph.net/mailman/listinfo/osg-users
    http://www.openscenegraph.org/ <http://www.openscenegraph.org/>


------------------------------------------------------------------------

_______________________________________________
osg-users mailing list
[email protected]
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/

_______________________________________________
osg-users mailing list
[email protected]
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/

Reply via email to