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

Reply via email to