The Geom object collects together a GeomVertexData and one or more
GeomPrimitive objects, to make a single renderable piece of geometry.
In fact, an individual Geom is the smallest piece into which Panda
will subdivide the scene for rendering; in any given frame, either an
entire Geom is rendered, or none of it is.
Fundamentally, a Geom is very simple; it contains a pointer to a
single GeomVertexData, and a list of one or more GeomPrimitives, of
various types, as needed. All the associated GeomPrimitives index
into the same GeomVertexData.
The GeomVertexData pointer may be unique to each Geom, or one
GeomVertexData may be shared among many different Geoms (each of which
might use a different subset of its vertices). Also, although the
GeomPrimitive objects are usually unique to each Geom, they may
also be shared between different Geoms.
Although a Geom can have any number of GeomPrimitives associated with
it, all of the GeomPrimitives must be of the same fundamental
primitive type: triangles, lines, or points. A particular Geom might
have GeomTriangles, GeomTristrips, and GeomTrifans; or it might have
GeomLines and GeomLinestrips; or it might have GeomPoints. But no one
Geom can have primitives from two different fundamental types. You
can call geom.getPrimitiveType() to determine the fundamental
primitive type stored within a particular Geom.