Hi Werner,

On Wed, Nov 24, 2010 at 3:02 PM, Werner Modenbach
<[email protected]> wrote:
> I was told using indexes is leaving fast path rendering. Isn't that the case?
> I would be very, very lucky!!!

Use vertex/colour/normal/etc index arrays in osg::Geometry will force
the OSG to dispatch data to OpenGL using OpenGL slow paths, as OpenGL
does not support independent index arrays for vertex data.  So avoid
using osg::Geometry::setVertexIndices(..), setNormalIndex(..),
setColorIndices(..).  These *Indices() methods are deprecated and only
currently kept around for backwards compatibility.

However, using DrawElementUShort primitive sets (a wrapper around
glDrawElements) to pass in indexed primitive data is directly
supported by OpenGL  and is the generally the best way to pass
primitive data as you can share vertex data, reducing the amount of
vertex data you need and enables efficient use of the vertex cache
down on the GPU.

For you case you should look at trying to minimize both the number of
vertices you have by sharing as much as possible, and reducing the
amount of data per vertex.  As Tim suggested you don't need to pass
normal, binormal and tangent vectors as you can compute the third
vector very easily and quickly down on the GPU.  You may even be able
to compute the surface orientation data down on the GPU if you start
using deferred rendering techniques.

Robert.

Robert.
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to