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.
Geom
GeomTriangles
|
GeomTriangles
|
GeomTristrips
|
|
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.