In geometry, a primitive is the simplest of default geometrical figures or shapes. More complex figures are built up by combining primitives. Table of Geometry, from the 1728 Cyclopaedia. ...
There is no rigorous, logical definition of a primitive. What counts as a primitive and what does not is largely a matter of personal opinion and convention, and varies depending on the context.
In Computer Science, a primitive can either be a point, a line or a polygon, although some people prefer to consider the triangle to be the two dimensional primitive, mostly because every polygon can be achieved with triangles. Primitives are used to create figures during runtime when to replace a sprite, or because this figure is not static (a meta-ball, for example). In three dimensions, triangles are used to render models. It is common word to say that a model which apparently lacks details (appears blocky or triangular) is low poly, or simply lacks polygons. Curves cannot be created with primitives, it is rather created by approximating the edge of the figure with a sufficient number of smaller lines, depending on the size of the surface.
Note that Geometries don't necessarily have to be leaves of the tree, as due the Node/Core divison every Node keeping a osg::Geometry Corehas children anyway, which are used just as all other osg::Node 's children.
The osg::Geometry setup is very nice and flexible to define: you can mix different kinds of primitives in an object, you can have properties and different kinds and the indexing allows the reuse of some or all of the data.
A geometry iterator allows to iterate over a given geometryprimitive by primitive, face by face (a face being a triangle or quad), or triangle by triangle.