.. _group__a3d__tessfacetype:

##########################################
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:`~A3DTessFaceData`\ instance. It's specified in the :c:member:`A3DTessFaceData::m_usUsedEntitiesFlags <A3DTessFaceData.m_usUsedEntitiesFlags>`\ member.


   2.0



Index
=====

.. rubric:: Preprocessor Definitions


.. rst-class:: api-xref-list


* :c:macro:`~kA3DTessFaceDataPolyface`
* :c:macro:`~kA3DTessFaceDataTriangle`
* :c:macro:`~kA3DTessFaceDataTriangleFan`
* :c:macro:`~kA3DTessFaceDataTriangleStripe`
* :c:macro:`~kA3DTessFaceDataPolyfaceOneNormal`
* :c:macro:`~kA3DTessFaceDataTriangleOneNormal`
* :c:macro:`~kA3DTessFaceDataTriangleFanOneNormal`
* :c:macro:`~kA3DTessFaceDataTriangleStripeOneNormal`
* :c:macro:`~kA3DTessFaceDataPolyfaceTextured`
* :c:macro:`~kA3DTessFaceDataTriangleTextured`
* :c:macro:`~kA3DTessFaceDataTriangleFanTextured`
* :c:macro:`~kA3DTessFaceDataTriangleStripeTextured`
* :c:macro:`~kA3DTessFaceDataPolyfaceOneNormalTextured`
* :c:macro:`~kA3DTessFaceDataTriangleOneNormalTextured`
* :c:macro:`~kA3DTessFaceDataTriangleFanOneNormalTextured`
* :c:macro:`~kA3DTessFaceDataTriangleStripeOneNormalTextured`


.. rst-class:: kind-group kind-preprocessor-definition

.. rubric:: Preprocessor Definitions
   :class: kind-group-title


.. c:macro:: kA3DTessFaceDataPolyface

      Reserved for future use.
      



.. c:macro:: kA3DTessFaceDataTriangle

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



.. c:macro:: 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 }
      



.. c:macro:: 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 }
      



.. c:macro:: kA3DTessFaceDataPolyfaceOneNormal

      Reserved for future use.
      



.. c:macro:: kA3DTessFaceDataTriangleOneNormal

      Unique triangle with one normal.
      
      Unique triangle with one normal. It is described using 4 indices:
      
      
      ::
      
         { Normal, Point1, Point2, Point3 }
      



.. c:macro:: kA3DTessFaceDataTriangleFanOneNormal

      Triangle fan where the normal is defined either globally or per-point.
      
      The normal is globally defined if :c:macro:`~kA3DTessFaceDataNormalSingle`\ flag 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`\ .
      



.. c:macro:: kA3DTessFaceDataTriangleStripeOneNormal

      Triangle strip where the normal is defined either globally or per-point.
      
      The normal is globally defined if :c:macro:`~kA3DTessFaceDataNormalSingle`\ flag 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`\ .
      



.. c:macro:: kA3DTessFaceDataPolyfaceTextured

      Reserved for future use.
      



.. c:macro:: kA3DTessFaceDataTriangleTextured

      Unique triangle with texture coordinates.
      
      This layout is similar to :c:macro:`~kA3DTessFaceDataTriangle`\ with 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,
         }
      



.. c:macro:: kA3DTessFaceDataTriangleFanTextured

      Triangle fan with texture coordinates.
      
      This layout is similar to :c:macro:`~kA3DTessFaceDataTriangleFan`\ with 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
         }
      



.. c:macro:: kA3DTessFaceDataTriangleStripeTextured

      Triangle strip with texture coordinates.
      
      This layout is similar to :c:macro:`~kA3DTessFaceDataTriangleStripe`\ with 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
         }
      



.. c:macro:: kA3DTessFaceDataPolyfaceOneNormalTextured

      Reserved for future use.
      



.. c:macro:: kA3DTessFaceDataTriangleOneNormalTextured

      Unique triangle with texture coordinates and a globally defined normal.
      
      This layout is similar to :c:macro:`~kA3DTessFaceDataTriangleOneNormal`\ with 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,
         }
      



.. c:macro:: kA3DTessFaceDataTriangleFanOneNormalTextured

      Triangle fan with texture coordinates where the normal is defined either globally or per-point.
      
      This layout is similar to :c:macro:`~kA3DTessFaceDataTriangleFanOneNormal`\ with the addition of texture coordinates indices before the point index.
      
      The normal is globally defined if :c:macro:`~kA3DTessFaceDataNormalSingle`\ flag 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:`~kA3DTessFaceDataNormalSingle`\ is not set, the layout is the same as :c:macro:`~kA3DTessFaceDataTriangleFanTextured`\ .
      



.. c:macro:: kA3DTessFaceDataTriangleStripeOneNormalTextured

      Triangle strip with texture coordinates where the normal is defined either globally or per-point.
      
      This layout is similar to :c:macro:`~kA3DTessFaceDataTriangleStripeOneNormal`\ with the addition of texture coordinates indices before the point index.
      
      The normal is globally defined if :c:macro:`~kA3DTessFaceDataNormalSingle`\ flag 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:`~kA3DTessFaceDataNormalSingle`\ is not set, the layout is the same as :c:macro:`~kA3DTessFaceDataTriangleStripeTextured`\ .
      




