.. _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`\ . 
      




