HI Aurelien, You'll be pleased to know I've finally getting through my submissions backlog and have merged your osg::PrimitiveRestartIndex submission.
Cheers, Robert. On 20 February 2013 16:06, Aurelien Albert <[email protected]> wrote: > Hi Robert, > > My first impression was also to set this on the PrimitiveSet... > > But I use it since a year now, and I find it's easier to define it as a > SateAttribute. > > The idea of this new OpenGL feature is : > > - set RestartIndex = "n" > - draw elements strip > -> when the index is "n", the strip is "stopped" and restarted > > It's very usefull for drawing tiles with a single strip and a "restart" at > the end of each row. > > The idea a an OSG StateAttribute is : > > Usually we use to build geometry from code, because software modelers rarely > support it (and 3d file formats doesn't support it) : > > -RootNode <= "PrimitiveRestartIndex=0" // So now, we know that our > restart index is 0 for all drawables under this node > | > - Drawable 1 : triangles => as usual > | > - Drawable 2 : triangles strip => as usual > | > - Drawable 3 : triangles strip + "GL_PRIMITIVE_RESTART" mode = ON => use the > restart index > | > - Drawable 4 : triangles strip + "GL_PRIMITIVE_RESTART" mode = ON => use the > restart index > | > - Drawable 5 : triangles strip => as usual > > > With a StateAttribute, it's easy for the developper to say "0 will be my > restart index for all this object" and then activate the mode only on some > nodes. > > The main problem is if you set and restart index value which is not included > in the vertex array (for exemple set restart index = 100 but you have only 50 > vertex). There is no problem with OpenGL, but some OSG algorithms will try to > access the vertex[100] and will segfault. > > To solve this, I think there is two ways : > > 1/ add restart index in osg::PrimitiveSet and use this value in all > algorithms. It's a lot of work, maybe dangerous, and it concern only a few > situations : developpers who use this extension should be aware of advanced > OpenGL (and OSG) data management > > 2/ use a StateAttribute, and choose a "correct" restart index. In my > applications, I always use "0" as a restart index and duplicate the first > vertex (vertex[0] = vertex[1]). So there is no difference for OpenGL and all > OSG algorithms works properly. > > > > Cheers, > Aurelien > > ------------------ > Read this topic online here: > http://forum.openscenegraph.org/viewtopic.php?p=52789#52789 > > > > > > _______________________________________________ > osg-submissions mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org _______________________________________________ osg-submissions mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org
