PEXOCCTriangleFan - Triangle Fan Primitive (5.2)


Synopsis

 
     void PEXOCCTriangleFan(
          PEXOCC context,
          PEXPointer facet_data,
          unsigned int count,
          PEXPointer vertices
      )

Arguments

context
An OC context returned by a successful PEXCreateOCC call.

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

resource_id (OCC)
The resource identifier of the renderer or structure.

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

facet_attributes (OCC)
A mask indicating the facet attributes provided (PEXGANone, PEXGAColor, PEXGANormal or PEXGAFloatData).

surface_vertex_attributes (OCC)
A mask indicating the vertex attributes provided (PEXGANone, PEXGAColor, PEXGANormal, PEXGAEdges, PEXGAFloatData or PEXGA2D).

color_type (OCC)
The type of color data provided (PEXColorTypeIndexed, PEXColorTypeRGB, PEXColorTypeCIE, PEXColorTypeHSV, PEXColorTypeHLS, PEXColorTypeRGB8, PEXColorTypeRGB16, PEXColorTypeRGBA, PEXColorTypeRGBA8, or PEXColorTypeRGBA16).

facet_fp_data_count (OCC)
Number of floats per facet provided.

surface_vertex_fp_data_count(OCC)
Number of floats per vertex provided.

facet_data
A pointer to the facet data. See Facet / Vertex Data Formats.

count
The number of vertices.

vertices
A pointer to the vertex data defining the triangle fan. Facet / Vertex Data Formats.

data_model (OCC)
Specifies the data model used to represent the geometric data.

data_model_specs (OCC)
Offset and size data for the PEXDataStride or PEXDataUnpacked data models.

Returns

None.

Description

Invoke PEXOCCTriangleFan to create a triangle fan primitive output command (PEXOCTriangleFanWithData).

This primitive independently renders each triangle in a triangle fan. A triangle fan is defined by a list of vertices in modeling coordinates. The first triangle is made up of vertices 1, 2 and 3, the second triangle is made up of vertices 1, 3 and 4, the third triangle is made up of vertices 1, 4 and 5, and so on.

If you define facet and/or vertex colors, then they are of the type specified by color_type. Otherwise the implementation ignores color_type.

Facet and vertex normals are assumed to be unit length vectors. If you specify a normal that is not unit length, then the result is implementation-dependent.

If you set the PEXGAFloatData bit of the facet attributes and/or vertex attributes, then you must supply extended floating-point data with each facet and/or vertex, respectively. If you set the PEXGAFloatData facet attribute bit, then facet_fp_data_count indicates the number of floating-point values for each facet. If you set the PEXGAFloatData vertex attribute bit, then surface_vertex_fp_data_count indicates the number of floating-point values for each vertex. If you set only one floating-point data attribute bit, then the implementation ignores the count corresponding to the other floating-point data attribute bit. If neither floating-point data attribute bit is set, then the implementation ignores both facet_fp_data_count and surface_vertex_fp_data_count.

If you indicate that facet data is present with the facet attributes, you must supply facet data for each facet (triangle).

If you set the PEXGAEdges bit of the surface vertex attributes, then two surface edge flags are specified with each vertex. This edge data is used if the pipeline state's surface edge flag is PEXOn. For the ith vertex, the first edge flag bit (0x00000001) indicates whether to draw the edge between the ith and (i-1)th vertices, and the second flag bit (0x00000002) indicates whether to draw the edge between the ith and first vertices. The edge flags of the first vertex in vertices are ignored; the first edge flag for the second vertex is ignored. If the edges vertex attribute is not set, then all edges are drawn if the pipeline state's surface edge flag is PEXOn.

If the PEXGA2D surface vertex attribute bit is set, then the vertex coordinates are of type COORD_2D instead of type COORD_3D.

Clipping is similar to Fill Area 3D. See Surfaces - General Attributes.

The basic surface, styled and shaded surface, edge, and data mapping attribute sets are applied to this primitive.

If you specify a triangle fan containing fewer than three vertices, then the fan is stored in a structure when included in a PEXStoreElements request but when rendered, the output command has no visual effect. Such a primitive has no visual effect when included in a PEXRenderOutputCommands request.

All other aspects of this primitive are the same as PEXOCCFillArea.

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 primitives similar to this one, see:

There are no PEXlib 5.1 compatibility primitives similar to this one.

For attributes that affect this primitive, see

For an overview, see Output Command Functions.