Bitmasks for Specifying Tessellation Types

Bitmasks for specifying a type of tessellation face data.

These flags controls the way the vertex coordinates are indexed in a:c:struct:~A3DTessFaceDatainstance. It’s specified in the:c:member:A3DTessFaceData::m_usUsedEntitiesFlags <A3DTessFaceData.m_usUsedEntitiesFlags>member.

2.0

Index

Preprocessor Definitions

Preprocessor Definitions

kA3DTessFaceDataPolyface

Reserved for future use.

kA3DTessFaceDataTriangle

Unique triangle.

One triangle described using``6``indexes forming``3```{Normal, Point} pairs: { Normal1, Point1, Normal2, Point2, Normal3, Point3 }

kA3DTessFaceDataTriangleFan

Triangle fan.

The layout consists in``2*N``indices where``N``is the number of points. Each vertex is described as a``{Normal, Point}``pair.

{ Normal1, Point1, Normal2, Point2, ..., ..., NormalN, PointN }
kA3DTessFaceDataTriangleStripe

Triangle strip.

The layout consists in``2*N``indices where``N``is the number of points. Each vertex is described as a``{Normal, Point}``pair.

{ Normal1, Point1, Normal2, Point2, ..., ..., NormalN, PointN }
kA3DTessFaceDataPolyfaceOneNormal

Reserved for future use.

kA3DTessFaceDataTriangleOneNormal

Unique triangle with one normal.

Unique triangle with one normal. It is described using 4 indices:

{ Normal, Point1, Point2, Point3 }
kA3DTessFaceDataTriangleFanOneNormal

Triangle fan where the normal is defined either globally or per-point.

The normal is globally defined if:c:macro:~kA3DTessFaceDataNormalSingleflag is set. In that case the layout consists in``N+1``indices, where N is the number of points:

{ Normal, Point1, Point2, ..., PointN }

If not set, the normal indices are set per-point. The layout is the same as:c:macro:~kA3DTessFaceDataTriangleFan.

kA3DTessFaceDataTriangleStripeOneNormal

Triangle strip where the normal is defined either globally or per-point.

The normal is globally defined if:c:macro:~kA3DTessFaceDataNormalSingleflag is set. In that case the layout consists in``N+1``indices, where N is the number of points:

{ Normal, Point1, Point2, ..., PointN }

If not set, the normal indices are set per-point. The layout is the same as:c:macro:~kA3DTessFaceDataTriangleStripe.

kA3DTessFaceDataPolyfaceTextured

Reserved for future use.

kA3DTessFaceDataTriangleTextured

Unique triangle with texture coordinates.

This layout is similar to:c:macro:~kA3DTessFaceDataTrianglewith the addition of texture coordinates indices before the point index. Each point is then described using the following layout:{Normal, Textures..., Point}, where``Textures…``is the list of texture indices.

The number of texture indices per point is given by:c:member:A3DTessFaceData::m_uiTextureCoordIndexesSize <A3DTessFaceData.m_uiTextureCoordIndexesSize>. Thus the number of indices in the element array is equal to``6 + 3 * m_uiTextureCoordIndexesSize``.

For example, if there are two texture indices per point, the layout will be a 12 wide array:

{
  Normal1, Texture1-1, Texture1-2, Point1,
  Normal2, Texture2-1, Texture2-2, Point2,
  Normal3, Texture3-1, Texture3-2, Point3,
}
kA3DTessFaceDataTriangleFanTextured

Triangle fan with texture coordinates.

This layout is similar to:c:macro:~kA3DTessFaceDataTriangleFanwith the addition of texture coordinates indices before the point index. Each point is then described using the following layout:{Normal, Textures..., Point}, where``Textures…``is the list of texture indices.

The number of texture indices per point is given by:c:member:A3DTessFaceData::m_uiTextureCoordIndexesSize <A3DTessFaceData.m_uiTextureCoordIndexesSize>. Thus the number of indices in the element array is equal to``N * (m_uiTextureCoordIndexesSize + 2)``where``N``is the number of points.

For example, if there are two texture indices per point and two triangles (6 points), the layout will be a 24 wide array:

{
  Normal1, Texture1-1, Texture1-2, Point1,
  Normal2, Texture2-1, Texture2-2, Point2,
  Normal3, Texture3-1, Texture3-2, Point3,
  Normal4, Texture4-1, Texture4-2, Point4,
  Normal5, Texture5-1, Texture5-2, Point5,
  Normal6, Texture6-1, Texture6-2, Point6
}
kA3DTessFaceDataTriangleStripeTextured

Triangle strip with texture coordinates.

This layout is similar to:c:macro:~kA3DTessFaceDataTriangleStripewith the addition of texture coordinates indices before the point index. Each point is then described using the following layout:{Normal, Textures..., Point}, where``Textures…``is the list of texture indices.

The number of texture indices per point is given by:c:member:A3DTessFaceData::m_uiTextureCoordIndexesSize <A3DTessFaceData.m_uiTextureCoordIndexesSize>. Thus the number of indices in the element array is equal to``N * (m_uiTextureCoordIndexesSize + 2)``where``N``is the number of points.

For example, if there are two texture indices per point and two triangles (6 points), the layout will be a 24 wide array:

{
  Normal1, Texture1-1, Texture1-2, Point1,
  Normal2, Texture2-1, Texture2-2, Point2,
  Normal3, Texture3-1, Texture3-2, Point3,
  Normal4, Texture4-1, Texture4-2, Point4,
  Normal5, Texture5-1, Texture5-2, Point5,
  Normal6, Texture6-1, Texture6-2, Point6
}
kA3DTessFaceDataPolyfaceOneNormalTextured

Reserved for future use.

kA3DTessFaceDataTriangleOneNormalTextured

Unique triangle with texture coordinates and a globally defined normal.

This layout is similar to:c:macro:~kA3DTessFaceDataTriangleOneNormalwith the addition of texture coordinates indices before the point index. The unique normal is defined first. Each point is then described using the following layout:{Textures..., Point}, where``Textures…``is the list of texture indices.

The number of texture indices per point is given by:c:member:A3DTessFaceData::m_uiTextureCoordIndexesSize <A3DTessFaceData.m_uiTextureCoordIndexesSize>. Thus the number of indices in the element array is equal to``4 + 3 * m_uiTextureCoordIndexesSize``.

For example, if there are two texture indices per point, the layout will be a 12 wide array:

{
  Normal
  Texture1-1, Texture1-2, Point1,
  Texture2-1, Texture2-2, Point2,
  Texture3-1, Texture3-2, Point3,
}
kA3DTessFaceDataTriangleFanOneNormalTextured

Triangle fan with texture coordinates where the normal is defined either globally or per-point.

This layout is similar to:c:macro:~kA3DTessFaceDataTriangleFanOneNormalwith the addition of texture coordinates indices before the point index.

The normal is globally defined if:c:macro:~kA3DTessFaceDataNormalSingleflag is set. In that case the unique normal is defined first. Each point is then described using the following layout:{Textures..., Point}, where``Textures…``is the list of texture indices.

The number of texture indices per point is given by:c:member:A3DTessFaceData::m_uiTextureCoordIndexesSize <A3DTessFaceData.m_uiTextureCoordIndexesSize>. Thus the number of indices in the element array is equal to``N * (m_uiTextureCoordIndexesSize + 1)``where``N``is the number of points.

For example, if there are two texture indices per point and two triangles (6 points), the layout will be a 24 wide array:

{
  Normal
  Texture1-1, Texture1-2, Point1,
  Texture2-1, Texture2-2, Point2,
  Texture3-1, Texture3-2, Point3,
  Texture4-1, Texture4-2, Point4,
  Texture5-1, Texture5-2, Point5,
  Texture6-1, Texture6-2, Point6
}

If:c:macro:~kA3DTessFaceDataNormalSingleis not set, the layout is the same as:c:macro:~kA3DTessFaceDataTriangleFanTextured.

kA3DTessFaceDataTriangleStripeOneNormalTextured

Triangle strip with texture coordinates where the normal is defined either globally or per-point.

This layout is similar to:c:macro:~kA3DTessFaceDataTriangleStripeOneNormalwith the addition of texture coordinates indices before the point index.

The normal is globally defined if:c:macro:~kA3DTessFaceDataNormalSingleflag is set. In that case the unique normal is defined first. Each point is then described using the following layout:{Textures..., Point}, where``Textures…``is the list of texture indices.

The number of texture indices per point is given by:c:member:A3DTessFaceData::m_uiTextureCoordIndexesSize <A3DTessFaceData.m_uiTextureCoordIndexesSize>. Thus the number of indices in the element array is equal to``N * (m_uiTextureCoordIndexesSize + 1)``where``N``is the number of points.

For example, if there are two texture indices per point and two triangles (6 points), the layout will be a 24 wide array:

{
  Normal
  Texture1-1, Texture1-2, Point1,
  Texture2-1, Texture2-2, Point2,
  Texture3-1, Texture3-2, Point3,
  Texture4-1, Texture4-2, Point4,
  Texture5-1, Texture5-2, Point5,
  Texture6-1, Texture6-2, Point6
}

If:c:macro:~kA3DTessFaceDataNormalSingleis not set, the layout is the same as:c:macro:~kA3DTessFaceDataTriangleStripeTextured.