A3DTessFaceData
-
struct
A3DTessFaceData Structure that describes basic entities of a face in a solid or surface mesh representations.
2.0In the context of solid or surface mesh representations, an entity can be any number of triangles. If more than one, they maybe organized as a fan or strip.
The:c:member:m_uiStyleIndexesSize <A3DTessFaceData.m_uiStyleIndexesSize>member has these values:
- 0 indicates that there are no graphics (in this case, all graphics are inherited from the owner (parent) of the:c:struct:~A3DTess3DData).
- 1 indicates that one graphic is associated with the face.
- Greater than 1 indicates that the number of graphics is linked to the number of entities in the:c:member:m_puiSizesTriangulated <A3DTessFaceData.m_puiSizesTriangulated>member.
Wireframe representation
The following:c:struct:~A3DTessFaceDatamembers are used to describe a wireframe representation:
m_uiStartWire: The starting index for the wire in the array of point indexes of the:c:struct:~A3DTess3DData.m_puiSizesWires: Array of the number of indexes for each wire edge of the face, where the number of indexes is OR’d with the relevant flags:c:macro:~kA3DTessFaceDataWireIsNotDrawnand/or:c:macro:~kA3DTessFaceDataWireIsClosing.
Consider an example of an:c:struct:~A3DTessFaceDatastructure in which both loops describe closed wire edges:
- First edge has 16 points (
0x10). - Second edge has 32 points (
0x20). - First loop consists of two wire edges:
- Second loop is one edge having 18 points (
0x12).
For this example, the:c:member:m_puiSizesWires <A3DTessFaceData.m_puiSizesWires>array has these entries:
[0x0010, 0x8020, 0x8012]. The second and third array entries are the number of edges OR’d with the:c:macro:~kA3DTessFaceDataWireIsClosing(0x8000). Notice that the indexes for each edge’s extremity are always stored. Therefore, the last point of the first edge is followed by the first point of the second edge.In an:c:struct:~A3DTessFaceDatastructure, the size of a wire edge is limited to``16383``(0x3FFF) points.Solid representation
The following:c:struct:~A3DTessFaceDatamembers are for solid representations:
m_usUsedEntitiesFlags(see:ref:Bitmasks for Specifying Tessellation Types <group__a3d__tessfacetype>): This flag specifies how to interpret the array:c:member:m_puiSizesTriangulated <A3DTessFaceData.m_puiSizesTriangulated>.m_uiStartTriangulated: Starting index for the triangulated data in the array of point indexes of the:c:struct:~A3DTess3DData.m_puiSizesTriangulated: Array of the number of indexes for each triangulated entity of the face.The triangulated data sizes are stored following the order of values in:ref:Bitmasks for Specifying Tessellation Types <group__a3d__tessfacetype>. Thus, the triangles are stored before triangle fans and before textured triangles.- For triangle types, the:c:member:m_puiSizesTriangulated <A3DTessFaceData.m_puiSizesTriangulated>member specifies the number of triangles.
- For triangle fan and strips types, the:c:member:m_puiSizesTriangulated <A3DTessFaceData.m_puiSizesTriangulated>member specifies the number of fans or strips followed by the number of points for each of them.
Consider an example of an:c:struct:~A3DTessFaceDatastructure that describes five triangles, two fans of 5 and 7 points respectively, and one strip of 11 indexes. For this example, set:c:member:m_usUsedEntitiesFlags <A3DTessFaceData.m_usUsedEntitiesFlags>to:c:macro:~kA3DTessFaceDataTriangle&:c:macro:~kA3DTessFaceDataTriangleFan&:c:macro:~kA3DTessFaceDataTriangleStripe. In this case,:c:member:m_puiSizesTriangulated <A3DTessFaceData.m_puiSizesTriangulated>will be [5,2,5,7,1,11].
In case of the tessellation types**kA3DTessFaceData*OneNormal***(i.e., one of the bitmasks specifying a tessellation type with one normal), the number of points can bear the flag:c:macro:~kA3DTessFaceDataNormalSingle, modifying the way of reading normals information. In such a case, you must use:c:macro:~kA3DTessFaceDataNormalSingleto characterize status and:c:macro:~kA3DTessFaceDataNormalMaskto access the real value.
The following:c:struct:~A3DTessFaceDatamembers also apply to solid representations:
m_pucRGBAVertices: Colors stored directly on vertices. Either there is no color on vertices or every vertex must bear a color. Therefore,:c:member:m_uiRGBAVerticesSize <A3DTessFaceData.m_uiRGBAVerticesSize>is either 0 or equal to the number of point indexes as calculated from:c:member:m_puiSizesTriangulated <A3DTessFaceData.m_puiSizesTriangulated>, multiplied by 3 if RGB, by 4 if RGBA. (In the previous example,:c:member:m_uiRGBAVerticesSize <A3DTessFaceData.m_uiRGBAVerticesSize>is 38*(m_bIsRGBA?4:3) = (5*3 + 5 + 7 + 11)*(m_bIsRGBA?4:3)).m_bIsRGBA: If true, the color scheme is RGBa; otherwise, it is RGB.m_usBehaviour: This member denotes the graphics behavior for this:c:struct:~A3DTessFaceDatatowards owning entity in the tree, as described in:ref:Bit Field for Behavior on Graphics <group__a3d__graphicsbits>. For face behavior,:c:macro:~kA3DGraphicsShowand:c:macro:~kA3DGraphicsRemovedare not currently supported.m_uiTextureCoordIndexesSize: Number of texture coordinate indexes (see:ref:Bitmasks for Specifying Tessellation Types <group__a3d__tessfacetype>).
Variables
-
A3DUns32
A3DTessFaceData.m_uiStyleIndexesSize -
The size of:c:member:m_puiStyleIndexes <A3DTessFaceData.m_puiStyleIndexes>.
-
A3DUns32 *
A3DTessFaceData.m_puiStyleIndexes -
Array of display styles.
See explanations above.
-
A3DUns32
A3DTessFaceData.m_uiStartWire -
See explanations above.
-
A3DUns32
A3DTessFaceData.m_uiSizesWiresSize -
The size of:c:member:m_puiSizesWires <A3DTessFaceData.m_puiSizesWires>.
-
A3DUns32 *
A3DTessFaceData.m_puiSizesWires -
See explanations above.
-
A3DUns16
A3DTessFaceData.m_usUsedEntitiesFlags -
Bit field containing list of used entities in current face tessellation.
See explanations above.
-
A3DUns32
A3DTessFaceData.m_uiStartTriangulated -
See explanations above.
-
A3DUns32
A3DTessFaceData.m_uiSizesTriangulatedSize -
The size of:c:member:m_puiSizesTriangulated <A3DTessFaceData.m_puiSizesTriangulated>.
-
A3DUns32 *
A3DTessFaceData.m_puiSizesTriangulated -
See explanations above.
-
A3DBool
A3DTessFaceData.m_bIsRGBA -
A value of true specifies that the array is made of RGBA.
A value of false indicates that it is made of RGB.
-
A3DUns32
A3DTessFaceData.m_uiRGBAVerticesSize -
The size of:c:member:m_pucRGBAVertices <A3DTessFaceData.m_pucRGBAVertices>.
-
A3DUns8 *
A3DTessFaceData.m_pucRGBAVertices -
See explanations above.
-
A3DUns16
A3DTessFaceData.m_usBehaviour -
See explanations above.
-
A3DUns32
A3DTessFaceData.m_uiTextureCoordIndexesSize -
See explanations above.