On 10/22/2012 11:15 PM, wh_xiexing wrote:
> i have hundreds of millions of points to render. i think the Geometry
> 's setVertexArray (Vec3Array) is time consuming .
> for every point , it must construct a Vec3 class, and put it into the
> array.


Not true, you can create a Vec3Array out of an array of floats with
nothing but a type cast. The Vec* and Vec*Array classes were designed to
line up data contiguously in memory so that OpenGL could use it directly
and efficiently (note that there are no virtual methods in the Vec*
classes).

There's no reason to modify OSG to do what you want:

// Construct an array of floats
float * lotsOfPoints = new float[count];

// Fill up the float array with point data
...

// Construct a Vec3Array out of the float data
ref_ptr<Vec3Array> array = new Vec3Array(count/3, (Vec3 *) lotsOfPoints);

// Assign the Vec3Array to Geometry
ref_ptr<Geometry> geom = new Geometry();
geom->setVertexArray(array);

--"J"

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

Reply via email to