Oh,

 

And the original draw method, _drawable->draw(renderInfo), is from
RenderLeaf.cpp (osgUtil)

 

-Bryan

 

  _____  

From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Bryan Berg
Sent: Wednesday, March 26, 2008 5:03 PM
To: 'OpenSceneGraph Users'
Subject: [osg-users] memory exception - bad alloc from osgutil to drawable

 

Hi all,

 

I'm trying to draw a scene and I'm getting the error:

 

Unhandled exception at 0x7c812a5b in Mocu.exe: Microsoft C++ exception:
std::bad_alloc @ 

0x0012f19c.

 

I've stepped through the code of osgutil and it crashes on:

 

_drawable->draw(renderInfo);

 

Which is inside

 

void RenderLeaf::render(osg::RenderInfo& renderInfo,RenderLeaf* previous)

 

Unfortunately I can't go inside the draw method since its not a cpp, but the
method looks like:

 

inline void Drawable::draw(RenderInfo& renderInfo) const

{

    if (_useDisplayList && !(_supportsVertexBufferObjects &&
_useVertexBufferObjects &&
renderInfo.getState()->isVertexBufferObjectSupported()))

    {

        // get the contextID (user defined ID of 0 upwards) for the

        // current OpenGL context.

        unsigned int contextID = renderInfo.getContextID();

 

        // get the globj for the current contextID.

        GLuint& globj = _globjList[contextID];

 

        // call the globj if already set otherwise compile and execute.

        if( globj != 0 )

        {

            glCallList( globj );

        }

        else if (_useDisplayList)

        {

#ifdef USE_SEPARATE_COMPILE_AND_EXECUTE

            globj = generateDisplayList(contextID, getGLObjectSizeHint());

            glNewList( globj, GL_COMPILE );

            if (_drawCallback.valid())

                _drawCallback->drawImplementation(renderInfo,this);

            else

                drawImplementation(renderInfo);

            glEndList();

 

            glCallList( globj);

#else

            globj = generateDisplayList(contextID, getGLObjectSizeHint());

            glNewList( globj, GL_COMPILE_AND_EXECUTE );

            if (_drawCallback.valid())

                _drawCallback->drawImplementation(renderInfo,this);

            else

                drawImplementation(renderInfo);

            glEndList();

#endif

        }

 

        return;

 

    }

 

    // draw object as nature intended..

    if (_drawCallback.valid())

        _drawCallback->drawImplementation(renderInfo,this);

    else

        drawImplementation(renderInfo);

}

 

 

}

 

Any ideas?

 

Thanks so much!

 

-Bryan

 

 

 

 

 

_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to