GetFormat

Returns the current format given a mask.

Syntax

public const string EngineDLL = @"engine.dll";[DllImport(EngineDLL, EntryPoint = "GetFormat")]
public static extern Int64 GetFormat(Int64 model, Int64 mask);    

Property model

Size: 64 bit / 8 byte (value)
The handle to the model. The model handle is static during its existance. Several models can be opened simultaniously within one session. Different models are always independent, threads are allowed to be running on different models simultaniously.

Property mask

Size: 64 bit / 8 byte (value)
This mask or bitmask is data that is used for bitwise operations, i.e. the bits set in the mask are the bits affected in the setting or return value.

Example

Here you can find code snippits that show how the API call GetFormat can be used.

using Engine;

const Int64 flagbit0 = 1;                           // 2^^0                          0000.0000..0000.0001
const Int64 flagbit1 = 2;                           // 2^^1                          0000.0000..0000.0010
const Int64 flagbit2 = 4;                           // 2^^2                          0000.0000..0000.0100
const Int64 flagbit3 = 8;                           // 2^^3                          0000.0000..0000.1000

const Int64 flagbit4 = 16;                          // 2^^4                          0000.0000..0001.0000
const Int64 flagbit5 = 32;                          // 2^^5                          0000.0000..0010.0000
const Int64 flagbit6 = 64;                          // 2^^6                          0000.0000..0100.0000
const Int64 flagbit7 = 128;                         // 2^^7                          0000.0000..1000.0000

const Int64 flagbit8 = 256;                         // 2^^8                          0000.0001..0000.0000
const Int64 flagbit9 = 512;                         // 2^^9                          0000.0010..0000.0000
const Int64 flagbit10 = 1024;                       // 2^^10                         0000.0100..0000.0000
const Int64 flagbit11 = 2048;                       // 2^^11                         0000.1000..0000.0000

const Int64 flagbit12 = 4096;                       // 2^^12                         0001.0000..0000.0000
const Int64 flagbit13 = 8192;                       // 2^^13                         0010.0000..0000.0000
const Int64 flagbit14 = 16384;                      // 2^^14                         0100.0000..0000.0000
const Int64 flagbit15 = 32768;                      // 2^^15                         1000.0000..0000.0000

const Int64 flagbit16 = 65536;                      // 2^^16   0000.0000..0000.0001  0000.0000..0000.0000
const Int64 flagbit17 = 131072;                     // 2^^17   0000.0000..0000.0010  0000.0000..0000.0000
const Int64 flagbit18 = 262144;                     // 2^^18   0000.0000..0000.0100  0000.0000..0000.0000
const Int64 flagbit19 = 524288;                     // 2^^19   0000.0000..0000.1000  0000.0000..0000.0000

const Int64 flagbit20 = 1048576;                    // 2^^20   0000.0000..0001.0000  0000.0000..0000.0000
const Int64 flagbit21 = 2097152;                    // 2^^21   0000.0000..0010.0000  0000.0000..0000.0000
const Int64 flagbit22 = 4194304;                    // 2^^22   0000.0000..0100.0000  0000.0000..0000.0000
const Int64 flagbit23 = 8388608;                    // 2^^23   0000.0000..1000.0000  0000.0000..0000.0000

const Int64 flagbit24 = 16777216;                   // 2^^24   0000.0001..0000.0000  0000.0000..0000.0000
const Int64 flagbit25 = 33554432;                   // 2^^25   0000.0010..0000.0000  0000.0000..0000.0000
const Int64 flagbit26 = 67108864;                   // 2^^26   0000.0100..0000.0000  0000.0000..0000.0000
const Int64 flagbit27 = 134217728;                  // 2^^27   0000.1000..0000.0000  0000.0000..0000.0000

const Int64 flagbit28 = 268435456;                  // 2^^28   0001.0000..0000.0000  0000.0000..0000.0000
const Int64 flagbit29 = 536870912;                  // 2^^29   0010.0000..0000.0000  0000.0000..0000.0000
const Int64 flagbit30 = (Int64) 1073741824;         // 2^^30   0100.0000..0000.0000  0000.0000..0000.0000
const Int64 flagbit31 = (Int64) 2147483648;         // 2^^31   1000.0000..0000.0000  0000.0000..0000.0000

static void Main(string[] args)
{
    Int64 model = Engine.x86_64.CreateModel();

    if (model != 0)
    {
        {
            //
            //  Initializing the mask with all possible options
            //
            Int64   setting = 0,
                    mask = Engine.x86_64.GetFormat(0, 0);

            setting += 0 * flagbit2;        //    SINGLE / DOUBLE PRECISION (float / double)
            setting += 0 * flagbit3;        //    32 / 63 BIT INDEX ARRAY (int32_t / int64_t)

            setting += 1 * flagbit4;        //    OFF / ON VECTORS (x, y, z) 
            setting += 1 * flagbit5;        //    OFF / ON NORMALS (Nx, Ny, Nz)
            setting += 0 * flagbit6;        //    OFF / ON TEXTURE I (u1, v1)
            setting += 0 * flagbit7;        //    OFF / ON TEXTURE II (u2, v2)

            setting += 1 * flagbit8;        //    OFF / ON TRIANGLES
            setting += 1 * flagbit9;        //    OFF / ON LINES
            setting += 1 * flagbit10;       //    OFF / ON POINTS

            setting += 0 * flagbit12;       //    OFF / ON WIREFRAME FACES
            setting += 0 * flagbit13;       //    OFF / ON WIREFRAME CONCEPTUAL FACES

            setting += 0 * flagbit14;       //    OFF / ON STRUCTURE WIREFRAME AS POLYGON / TUPLE
            setting += 0 * flagbit15;       //    OFF / ON ADVANCED NORMALS (I.E. FOLLOWING THE SEMANTIC MEANING OF THE CONCEPT)

            setting += 0 * flagbit16;       //    OFF / ON DIRECTX (COMBINATION SETTING BIT 20, 21, 22, 23)
            setting += 0 * flagbit17;       //    OFF / ON OPENGL (COMBINATION SETTING BIT 20, 21, 22, 23)

            setting += 0 * flagbit18;       //    OFF / ON EXPORT BOTH SIDES OF TRIANGLES

            setting += 0 * flagbit20;       //    OFF / ON EXPERT SETTING TRIANGLE WINDING CW / ACW
            setting += 0 * flagbit21;       //    OFF / ON EXPERT SETTING NONE / VERTEX + NORMAL Y = Z / Z = -Y
            setting += 0 * flagbit22;       //    OFF / ON EXPERT SETTING
            setting += 0 * flagbit23;       //    OFF / ON EXPERT SETTING

            setting += 0 * flagbit24;       //    OFF / ON AMBIENT COLOR COMPONENT
            setting += 0 * flagbit25;       //    OFF / ON DIFFUSE COLOR COMPONENT
            setting += 0 * flagbit26;       //    OFF / ON EMISSIVE COLOR COMPONENT
            setting += 0 * flagbit27;       //    OFF / ON SPECULAR COLOR COMPONENT

            setting += 0 * flagbit28;       //    OFF / ON TEXTURE I TANGENT
            setting += 0 * flagbit29;       //    OFF / ON TEXTURE I BINORMAL

            setting += 0 * flagbit30;       //    OFF / ON TEXTURE II TANGENT (64 BIT ONLY)
            setting += 0 * flagbit31;       //    OFF / ON TEXTURE II BINORMAL (64 BIT ONLY)

            Int64   vertexElementSizeInBytes = Engine.x86_64.SetFormat(model, setting, mask);
        }

        //
        //  Check if a certain option is set
        //
        if (Engine.x86_64.GetFormat(model, flagbit5) != 0)
        {
            //  Normal coordinates (Nx, Ny, Nz) are exported
        }
        else
        {
            //  Normal coordinates (Nx, Ny, Nz) are not exported
        }

        if (Engine.x86_64.GetFormat(model, flagbit27) != 0)
        {
            //  Specular color is exported
        }
        else
        {
            //  Specular color is not exported
        }

        {
            //
            //  Get all set options
            //
            Int64   setting = Engine.x86_64.GetFormat(model, Engine.x86_64.GetFormat(0, 0));

            if ((setting & flagbit5) != 0)
            {
                //  Normal coordinates (Nx, Ny, Nz) are exported
            }
            else
            {
                //  Normal coordinates (Nx, Ny, Nz) are not exported
            }

            if ((setting & flagbit27) != 0)
            {
                //  Specular color is exported
            }
            else
            {
                //  Specular color is not exported
            }
        }
    }
}