NAME¶
gleSetJoinStyle, gleGetJoinStyle - Query and Set the GLE join style flags.
SYNTAX¶
void gleSetJoinStyle (int style);
int gleGetJoinStyle (void);
ARGUMENTS¶
- style
- bitwise OR of flags
DESCRIPTION¶
Query and set the GLE join style flags. This word is a bitwise OR of the flags
described below.
The initial join style is TUBE_JN_ANGLE | TUBE_JN_CAP | TUBE_NORM_FACET.
Extrusion Join Styles
- TUBE_JN_RAW
- Draw polycylinders, polycones, extrusions, etc. with no
special treatment of the extrusion ends.
- TUBE_JN_ANGLE
- Draw polycylinders, polycones, extrusions, etc. by
extending the different segments until they butt into each other with an
angular style.
- TUBE_JN_CUT
- Draw polycylinders, polycones, extrusions, etc. by joining
together the different segments and slicing off the joint at half the
angle between the segments. A cap is drawn. Note that the slicing plane
runs through the origin of the contour coordinate system. Thus, the amount
of slice can be varied by offsetting the contour with respect to the
origin.
Note that when two segments meet at a shallow angle, the cut join style will
potentially shave off a whole lot of the contour, leading to
"surprising" results...
- TUBE_JN_ROUND
- Joints will be rounded. Strictly speaking, the part of the
joint above the origin will be rounded. The part below the origin will
come together in an angular join.
- TUBE_JN_MASK
- Mask bits. This can be used to mask off the bit field that
defines the join style.
End Caps
- TUBE_JN_CAP
- If this is set, a cap will be drawn at each end of the
extrusion.
Automatic Normal Vector Generation
- TUBE_NORM_FACET
- A normal vector is generated per facet. Useful for having
an extrusion have a "faceted" look, such as when extruding a
square -- each of the four sides of the square will look flat.
- TUBE_NORM_EDGE
- Normal vectors are generated so that they lie along edges.
Useful for making angular things look rounded under lighting. For example,
when extruding a hexagon and using this flag, the hexagonal extrusion will
look (more like a) smooth perfectly round cylinder, rather than a
six-sided shape.
- TUBE_NORM_PATH_EDGE
- Normal vectors are generated so that they both lie on
edges, and so that they interpolate between neighboring segments. Useful
for drawing "spaghetti" -- extrusions that follow a spline path.
Because the spline path must be "tessellated" into small
straight segments, each segment will look straight unless this flag is
set.
- TUBE_NORM_MASK
- A mask useful for masking out the "norm" bits.
Closed or Open Contours
- TUBE_CONTOUR_CLOSED
- If this bit is set, the contour will be treated as a
"closed" contour, where the last point connects back up to the
first. It is useful to set this flag when drawing closed shapes (such as
extruded cylinders, star-shapes, I-Beams, etc. When drawing open
extrusions (e.g. corrugated sheet metal), you DON'T want to set this flag.
BUGS¶
Multiple threads using GLE share a single global join style (although this
should be easily fixable because GLE does use a centralized graphics context).
SEE ALSO¶
gleExtrusion, gleTextureMode
AUTHOR¶
Linas Vepstas (linas@linas.org)