[osg-users] Questions about Geometry implementation details

Ralph Kern usenet04 at rk-se.de
Thu Oct 18 23:40:34 PDT 2007


Robert Osfield schrieb:
> On 10/19/07, Ulrich Hertlein <u.hertlein at sandbox.de> wrote:
>> Hello Christian,
>>
>> Quoting Christian Muschick <christian.muschick at gmail.com>:
>>> My last request concerning this question didn't get any reply, so let me
>>> try this reformulated version:
>>> ...
>>>          osg::Array* array = *vitr;
>>>          if (!array->getVertexBufferObject()) vbo =
>>> array->getVertexBufferObject(); ///< This will only set vbo to NULL!?
>>>      }
>>>
>>>      if (!vbo) vbo = new osg::VertexBufferObject;
>>> }
>>>
>>> In the loop, vbo will never get a value different from the null-pointer.
>>> Is this on purpose? Did I miss something entirely?
>> This certainly looks like a type to me too (copy-and-paste anti-pattern).
>> I assume it should read 'if(array->getVertexBufferObject())...' so that if the
>> array has a VBO associated it's used.
>>
>> But I guess in the end Robert has to check that.
> 
> I'm rather lost on this topic as I've just spotted this single email
> on its own, which bit of OSG code are we talking about?
> 
> Robert.

from the original post:

In Geometry.cpp, there are several lines of code that don't make sense
to me. More precisely, the conditions in a few if-statements seem to be
incorrect.
As an example, in Geometry::getOrCreateVertexBuffer, it says
{
     ArrayList arrayList;
     getArrayList(arrayList);

     osg::VertexBufferObject* vbo = 0;

     ArrayList::iterator vitr;
     for(vitr = arrayList.begin();
         vitr != arrayList.end() && !vbo;
         ++vitr)
     {
         osg::Array* array = *vitr;
         if (!array->getVertexBufferObject()) vbo =
array->getVertexBufferObject(); ///< This will only set vbo to NULL!?
     }

     if (!vbo) vbo = new osg::VertexBufferObject;
}

regards Ralph




More information about the osg-users mailing list