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

Reply via email to