PEXFillArea - 3D Fill Area Primitive (5.0)


Note: This function has been superseded by the PEXOCCFillArea function, but is maintained here for backwards compatibility with PEXlib 5.1

Synopsis

 
     void PEXFillArea(
          Display *display,
          XID resource_id,
          PEXOCRequestType req_type,
          int shape_hint,
          int ignore_edges,
          unsigned int count,
          PEXCoord *points
      )

Arguments

display
A pointer to a display structure returned by a successful XOpenDisplay call.

resource_id
The resource identifier of the renderer or structure.

req_type
The request type for the output command (PEXOCRender, PEXOCStore, PEXOCRenderSingle or PEXOCStoreSingle).

shape_hint
The shape of the fill area (PEXShapeComplex, PEXShapeNonConvex, PEXShapeConvex or PEXShapeUnknown).

ignore_edges
A flag that determines if surface edges are rendered (True or False).

count
The number of points.

points
An array of vertices defining the fill area.

Returns

None.

Description

Invoke PEXFillArea to create a fill area output primitive.

An area is a list of vertices joined together to form a planar surface. PEXlib does not require fill areas to be strictly planar, but shading artifacts may occur if a fill area is not planar or nearly so. The first vertex of the fill area is connected to the second, the second to the third, and so on. PEXlib implicitly connects the last vertex to the first.

During the rendering process, the implementation transforms the fill area vertices to positions in device coordinates.

Reflectance calculations affect the surface colors. These calculations use the light state, interior style, and reflection model attributes. Depth-cueing computations affect surface colors and map the surface colors to device colors. The implementation does not display fill areas outside of the currently defined clipping volume. The implementation clips fill areas crossing the clipping volume, and displays only the portions inside the clipping volume.

Defining a fill area with fewer than three vertices creates a degenerate area. The implementation stores the fill area in a in a structure, but when the area is rendered, there is no visual effect. The implementation ignores the primitive.

A fill area may cross over itself to create a complex shape. PEXlib uses the even-odd rule to determine the area that lies in the interior of the fill area. Specifying the shape_hint argument improves performance for certain shapes. The implementation renders fill areas that are of higher complexity than indicated by shape_hint in an implementation-dependent way. Consequently, your applications should pass PEXShapeUnknown as the shape unless you are certain the fill area's shape is one of the other three.

Specify the ignore_edges argument as a boolean value indicating whether you want surface edges rendered. If you set the flag to True, then the implementation does not render surface edges. If you set the ignore edges flag to False, then the implementation renders surface edges according to the surface edge attributes if the surface edge flag attribute is PEXOn. Depending on the setting of the surface edge source flag values, this primitive obtains the attributes: surface edges, surface edge color, surface edge type, and surface edge width either directly from the current surface edge attribute values or from the edge bundle lookup table entry specified by the current edge bundle index attribute.

Depending on the setting of the surface attribute source flag values, this primitive obtains the attributes: surface color, interior style, interior style index, surface interpolation method, and reflection model either directly from the current surface attributes values or from the interior bundle lookup table entry specified by the current interior bundle index attribute.

If a surface is front-facing with respect to the point of view and the current culling mode enables front-faces to be rendered, then the implementation uses the surface color and reflection attributes when rendering the surface. If the surface is back-facing, then the current distinguish mode is True, and the current culling mode enables back-facing surfaces to be rendered, then the implementation uses the corresponding back-facing attributes instead.

Regardless of the fill area orientation, if the interior style is PEXInteriorStylePattern, then the primitive uses the pattern size, pattern reference point and pattern reference vectors to pattern the fill area.

Errors

BadPEXOutputCommand
The output command contains an invalid value.

BadPEXRenderer
The specified renderer resource identifier is invalid.

BadPEXStructure
The specified structure resource identifier is invalid.

See Also

For an overview, see Output Command Functions.