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.
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
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.get_primitive_type() to determine the
fundamental primitive type stored within a particular Geom.