Hi,

I'm trying to share a VBO and an EBO between multiple primitivesets of 
different geodes. My structure is the following (I always have only one 
primitiveset per geode, hence my question)

+ Geode
--+ PrimitiveSet
+ Geode
--+ PrimitiveSet
+ Geode
--+ PrimitiveSet
and so on

I've tried to do it in 2 different ways:

1) By first creating one unique ElementBufferObject and one unique 
VertexBufferObject for the whole scene graph, but then creating individual, 
distinct vertex arrays for each primitivesets, eg:


Code:
int numberOfVertexArrays = 0;
Geometry *geom = new Geometry(); // create my geometry
Vec3Array *arr = new Vec3Array(); // 1 distinct vertex array for each geometry
geom->setVertexArray(arr);
numberOfVertexArrays++;
arr->setVertexBufferObject(uniqueVbo); // use the unique VBO




For the EBO, I use DrawElements::setBufferIndex(), my index being the index of 
the vertex array I'm adding to the EBO.


Code:
DrawElements *drawElements = [...];
geom->addPrimitiveSet(drawElements);
drawElements->setBufferIndex(numberOfVertexArrays);



2) By creating one unique EBO and one unique VBO, and having only one unique 
vertex array, too. Everything's pretty much unique.

In both cases, OSG keeps binding/unbinding Array and Element buffers inbetween 
glDrawElements calls. I mean, OSG even does this when VBO and EBO buffer ids 
don't change across glDrawElements calls.

Isn't there a way to bind the VBO and EBO once for all at the beginning and 
then render everything?

Or do I *have* to have everything declared in the same geometry?

Cheers,
Fred

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=38251#38251





_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to