123
This commit is contained in:
467
CryCommon/VertexFormats.h
Normal file
467
CryCommon/VertexFormats.h
Normal file
@@ -0,0 +1,467 @@
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Crytek CryENGINE Source code
|
||||
//
|
||||
// File:VertexFormats.h -
|
||||
//
|
||||
// History:
|
||||
// -Feb 23,2001:Created by Marco Corbetta
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef VERTEXFORMATS_H
|
||||
#define VERTEXFORMATS_H
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
# pragma once
|
||||
#endif
|
||||
|
||||
// If you change this you also have to change gBufOffsTable in CRendElement.cpp
|
||||
enum eVertexFormat
|
||||
{
|
||||
VERTEX_FORMAT_P3F=1, // shadow volumes (12 bytes)
|
||||
VERTEX_FORMAT_P3F_COL4UB=2, // usually terrain (16 bytes)
|
||||
VERTEX_FORMAT_P3F_TEX2F=3, // everything else (20 bytes)
|
||||
VERTEX_FORMAT_P3F_COL4UB_TEX2F=4, // usually plants (24 bytes)
|
||||
VERTEX_FORMAT_TRP3F_COL4UB_TEX2F=5, // fonts (28 bytes)
|
||||
VERTEX_FORMAT_P3F_COL4UB_COL4UB=6, // terrain with detail layers (20 bytes)
|
||||
VERTEX_FORMAT_P3F_N=7, // (24 bytes)
|
||||
VERTEX_FORMAT_P3F_N_COL4UB=8, // (28 bytes)
|
||||
VERTEX_FORMAT_P3F_N_TEX2F=9, // (32 bytes)
|
||||
VERTEX_FORMAT_P3F_N_COL4UB_TEX2F=10, // (36 bytes)
|
||||
VERTEX_FORMAT_P3F_N_COL4UB_COL4UB=11, // terrain with detail layers (32 bytes)
|
||||
VERTEX_FORMAT_P3F_COL4UB_COL4UB_TEX2F=12, // usually plants (28 bytes)
|
||||
VERTEX_FORMAT_P3F_N_COL4UB_COL4UB_TEX2F=13, // usually plants (40 bytes)
|
||||
VERTEX_FORMAT_T3F_B3F_N3F=14, // tangent space (36 bytes)
|
||||
VERTEX_FORMAT_TEX2F=15, // light maps TC (8 bytes)
|
||||
VERTEX_FORMAT_P3F_COL4UB_TEX2F_TEX2F=16, // used for multitextured drawing
|
||||
VERTEX_FORMAT_NUMS=17, // number of vertex formats
|
||||
};
|
||||
|
||||
_inline int VertFormatForComponents(bool bNeedCol, bool bNeedSecCol, bool bNeedNormals, bool bHasTC)
|
||||
{
|
||||
int RequestedVertFormat;
|
||||
|
||||
if (!bNeedCol && !bHasTC && !bNeedNormals)
|
||||
RequestedVertFormat = VERTEX_FORMAT_P3F;
|
||||
else
|
||||
if (!bNeedCol && !bHasTC && bNeedNormals)
|
||||
RequestedVertFormat = VERTEX_FORMAT_P3F_N;
|
||||
else
|
||||
if (bNeedCol && bNeedSecCol && bNeedNormals && !bHasTC)
|
||||
RequestedVertFormat = VERTEX_FORMAT_P3F_N_COL4UB_COL4UB;
|
||||
else
|
||||
if (bNeedCol && bNeedSecCol && bNeedNormals && bHasTC)
|
||||
RequestedVertFormat = VERTEX_FORMAT_P3F_N_COL4UB_COL4UB_TEX2F;
|
||||
else
|
||||
if (bNeedCol && bNeedSecCol && !bNeedNormals && bHasTC)
|
||||
RequestedVertFormat = VERTEX_FORMAT_P3F_COL4UB_COL4UB_TEX2F;
|
||||
else
|
||||
if (bNeedCol && bNeedSecCol && !bHasTC)
|
||||
RequestedVertFormat = VERTEX_FORMAT_P3F_COL4UB_COL4UB;
|
||||
else
|
||||
if (bNeedCol && !bHasTC && !bNeedNormals)
|
||||
RequestedVertFormat = VERTEX_FORMAT_P3F_COL4UB;
|
||||
else
|
||||
if (bNeedCol && !bHasTC && bNeedNormals)
|
||||
RequestedVertFormat = VERTEX_FORMAT_P3F_N_COL4UB;
|
||||
else
|
||||
if (!bNeedCol && bHasTC && !bNeedNormals)
|
||||
RequestedVertFormat = VERTEX_FORMAT_P3F_TEX2F;
|
||||
else
|
||||
if (bNeedCol && bHasTC && !bNeedNormals)
|
||||
RequestedVertFormat = VERTEX_FORMAT_P3F_COL4UB_TEX2F;
|
||||
else
|
||||
if (!bNeedCol && bHasTC && bNeedNormals)
|
||||
RequestedVertFormat = VERTEX_FORMAT_P3F_N_TEX2F;
|
||||
else
|
||||
RequestedVertFormat = VERTEX_FORMAT_P3F_N_COL4UB_TEX2F;
|
||||
|
||||
return RequestedVertFormat;
|
||||
}
|
||||
|
||||
struct SBufInfoTable
|
||||
{
|
||||
int OffsTC;
|
||||
int OffsColor;
|
||||
int OffsSecColor;
|
||||
int OffsNormal;
|
||||
};
|
||||
|
||||
|
||||
struct struct_VERTEX_FORMAT_P3F // 12 bytes
|
||||
{
|
||||
Vec3 xyz;
|
||||
};
|
||||
struct struct_VERTEX_FORMAT_P3F_COL4UB
|
||||
{
|
||||
Vec3 xyz;
|
||||
UCol color;
|
||||
};
|
||||
struct struct_VERTEX_FORMAT_P3F_N // 24 bytes
|
||||
{
|
||||
Vec3 xyz;
|
||||
Vec3 normal;
|
||||
};
|
||||
struct struct_VERTEX_FORMAT_TEX2F // 8 bytes
|
||||
{
|
||||
float st[2];
|
||||
};
|
||||
|
||||
struct struct_VERTEX_FORMAT_P3F_N_COL4UB
|
||||
{
|
||||
Vec3 xyz;
|
||||
Vec3 normal;
|
||||
UCol color;
|
||||
};
|
||||
|
||||
struct struct_VERTEX_FORMAT_P3F_TEX2F
|
||||
{
|
||||
Vec3 xyz;
|
||||
float st[2];
|
||||
};
|
||||
struct struct_VERTEX_FORMAT_P3F_N_TEX2F
|
||||
{
|
||||
Vec3 xyz;
|
||||
Vec3 normal;
|
||||
float st[2];
|
||||
};
|
||||
|
||||
struct struct_VERTEX_FORMAT_P3F_COL4UB_TEX2F
|
||||
{
|
||||
Vec3 xyz;
|
||||
UCol color;
|
||||
float st[2];
|
||||
};
|
||||
struct struct_VERTEX_FORMAT_P3F_COL4UB_COL4UB_TEX2F
|
||||
{
|
||||
Vec3 xyz;
|
||||
UCol color;
|
||||
UCol seccolor;
|
||||
float st[2];
|
||||
};
|
||||
struct struct_VERTEX_FORMAT_P3F_N_COL4UB_COL4UB_TEX2F
|
||||
{
|
||||
Vec3 xyz;
|
||||
Vec3 normal;
|
||||
UCol color;
|
||||
UCol seccolor;
|
||||
float st[2];
|
||||
};
|
||||
struct struct_VERTEX_FORMAT_P3F_COL4UB_TEX2F_TEX2F
|
||||
{
|
||||
Vec3 xyz;
|
||||
UCol color;
|
||||
float st0[2];
|
||||
float st1[2];
|
||||
};
|
||||
|
||||
struct struct_VERTEX_FORMAT_P3F_N_COL4UB_TEX2F
|
||||
{
|
||||
Vec3 xyz;
|
||||
Vec3 normal;
|
||||
UCol color;
|
||||
float st[2];
|
||||
|
||||
bool operator == (struct_VERTEX_FORMAT_P3F_N_COL4UB_TEX2F & other);
|
||||
};
|
||||
|
||||
struct struct_VERTEX_FORMAT_TRP3F_COL4UB_TEX2F
|
||||
{
|
||||
float x,y,z,rhw;
|
||||
UCol color;
|
||||
float st[2];
|
||||
};
|
||||
|
||||
struct struct_VERTEX_FORMAT_P3F_COL4UB_COL4UB
|
||||
{
|
||||
Vec3 xyz;
|
||||
UCol color;
|
||||
UCol seccolor;
|
||||
};
|
||||
|
||||
struct struct_VERTEX_FORMAT_P3F_N_COL4UB_COL4UB
|
||||
{
|
||||
Vec3 xyz;
|
||||
Vec3 normal;
|
||||
UCol color;
|
||||
UCol seccolor;
|
||||
};
|
||||
|
||||
struct SPipTangents
|
||||
{
|
||||
Vec3 m_Tangent;
|
||||
Vec3 m_Binormal;
|
||||
Vec3 m_TNormal;
|
||||
};
|
||||
|
||||
_inline void *CreateVertexBuffer(int nFormat, int nVerts)
|
||||
{
|
||||
switch(nFormat)
|
||||
{
|
||||
case VERTEX_FORMAT_P3F:
|
||||
return new struct_VERTEX_FORMAT_P3F[nVerts];
|
||||
|
||||
case VERTEX_FORMAT_P3F_N:
|
||||
return new struct_VERTEX_FORMAT_P3F_N[nVerts];
|
||||
|
||||
case VERTEX_FORMAT_P3F_COL4UB_TEX2F:
|
||||
return new struct_VERTEX_FORMAT_P3F_COL4UB_TEX2F[nVerts];
|
||||
|
||||
case VERTEX_FORMAT_P3F_COL4UB_COL4UB_TEX2F:
|
||||
return new struct_VERTEX_FORMAT_P3F_COL4UB_COL4UB_TEX2F[nVerts];
|
||||
|
||||
case VERTEX_FORMAT_P3F_N_COL4UB_COL4UB_TEX2F:
|
||||
return new struct_VERTEX_FORMAT_P3F_N_COL4UB_COL4UB_TEX2F[nVerts];
|
||||
|
||||
case VERTEX_FORMAT_P3F_COL4UB_TEX2F_TEX2F:
|
||||
return new struct_VERTEX_FORMAT_P3F_COL4UB_TEX2F_TEX2F[nVerts];
|
||||
|
||||
case VERTEX_FORMAT_P3F_N_COL4UB_TEX2F:
|
||||
return new struct_VERTEX_FORMAT_P3F_N_COL4UB_TEX2F[nVerts];
|
||||
|
||||
case VERTEX_FORMAT_P3F_TEX2F:
|
||||
return new struct_VERTEX_FORMAT_P3F_TEX2F[nVerts];
|
||||
|
||||
case VERTEX_FORMAT_P3F_N_TEX2F:
|
||||
return new struct_VERTEX_FORMAT_P3F_N_TEX2F[nVerts];
|
||||
|
||||
case VERTEX_FORMAT_P3F_COL4UB:
|
||||
return new struct_VERTEX_FORMAT_P3F_COL4UB[nVerts];
|
||||
|
||||
case VERTEX_FORMAT_P3F_COL4UB_COL4UB:
|
||||
return new struct_VERTEX_FORMAT_P3F_COL4UB_COL4UB[nVerts];
|
||||
|
||||
case VERTEX_FORMAT_P3F_N_COL4UB_COL4UB:
|
||||
return new struct_VERTEX_FORMAT_P3F_N_COL4UB_COL4UB[nVerts];
|
||||
|
||||
case VERTEX_FORMAT_P3F_N_COL4UB:
|
||||
return new struct_VERTEX_FORMAT_P3F_N_COL4UB[nVerts];
|
||||
|
||||
case VERTEX_FORMAT_TRP3F_COL4UB_TEX2F:
|
||||
return new struct_VERTEX_FORMAT_TRP3F_COL4UB_TEX2F[nVerts];
|
||||
|
||||
case VERTEX_FORMAT_TEX2F:
|
||||
return new struct_VERTEX_FORMAT_TEX2F[nVerts];
|
||||
|
||||
default:
|
||||
assert(0);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#ifdef WIN64
|
||||
// we don't care about truncation of the struct member offset, because
|
||||
// it's a very small integer (even fits into a signed byte)
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable:4311)
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Vertex Sizes
|
||||
const int m_VertexSize[]=
|
||||
{
|
||||
0,
|
||||
sizeof(struct_VERTEX_FORMAT_P3F),
|
||||
sizeof(struct_VERTEX_FORMAT_P3F_COL4UB),
|
||||
sizeof(struct_VERTEX_FORMAT_P3F_TEX2F),
|
||||
sizeof(struct_VERTEX_FORMAT_P3F_COL4UB_TEX2F),
|
||||
sizeof(struct_VERTEX_FORMAT_TRP3F_COL4UB_TEX2F),
|
||||
sizeof(struct_VERTEX_FORMAT_P3F_COL4UB_COL4UB),
|
||||
sizeof(struct_VERTEX_FORMAT_P3F_N),
|
||||
sizeof(struct_VERTEX_FORMAT_P3F_N_COL4UB),
|
||||
sizeof(struct_VERTEX_FORMAT_P3F_N_TEX2F),
|
||||
sizeof(struct_VERTEX_FORMAT_P3F_N_COL4UB_TEX2F),
|
||||
sizeof(struct_VERTEX_FORMAT_P3F_N_COL4UB_COL4UB),
|
||||
sizeof(struct_VERTEX_FORMAT_P3F_COL4UB_COL4UB_TEX2F),
|
||||
sizeof(struct_VERTEX_FORMAT_P3F_N_COL4UB_COL4UB_TEX2F),
|
||||
sizeof(SPipTangents),
|
||||
sizeof(struct_VERTEX_FORMAT_TEX2F),
|
||||
sizeof(struct_VERTEX_FORMAT_P3F_COL4UB_TEX2F_TEX2F),
|
||||
};
|
||||
|
||||
|
||||
|
||||
// this is the table of offsets of UVs relative to the start of the structure
|
||||
// -1 means there's no UVs in this format
|
||||
// This is required by Animation and must be kept in tact with the vertex format enumeration
|
||||
const int g_VertFormatUVOffsets[] =
|
||||
{
|
||||
-1, // no UVs in this format - invalid format
|
||||
-1, // VERTEX_FORMAT_P3F=1, // shadow volumes (12 bytes)
|
||||
-1, // VERTEX_FORMAT_P3F_COL4UB=2, // usually terrain (16 bytes)
|
||||
(int)&(((struct_VERTEX_FORMAT_P3F_TEX2F*)0)->st[0]), // VERTEX_FORMAT_P3F_TEX2F=3, // everything else (20 bytes)
|
||||
(int)&(((struct_VERTEX_FORMAT_P3F_COL4UB_TEX2F*)0)->st[0]), // VERTEX_FORMAT_P3F_COL4UB_TEX2F=4, // usually plants (24 bytes)
|
||||
(int)&(((struct_VERTEX_FORMAT_TRP3F_COL4UB_TEX2F*)0)->st[0]),// VERTEX_FORMAT_TRP3F_COL4UB_TEX2F=5, // fonts (28 bytes)
|
||||
-1, // VERTEX_FORMAT_P3F_COL4UB_COL4UB=1,
|
||||
-1, // VERTEX_FORMAT_P3F_N=1,
|
||||
-1, // VERTEX_FORMAT_P3F_N_COL4UB=1,
|
||||
(int)&(((struct_VERTEX_FORMAT_P3F_N_TEX2F*)0)->st[0]), // VERTEX_FORMAT_P3F_N_TEX2F=3, // everything else (20 bytes)
|
||||
(int)&(((struct_VERTEX_FORMAT_P3F_N_COL4UB_TEX2F*)0)->st[0]) // VERTEX_FORMAT_P3F_N_COL4UB_TEX2F=4, // usually plants (24 bytes)
|
||||
-1, // VERTEX_FORMAT_P3F_N_COL4UB_COL4UB=1,
|
||||
(int)&(((struct_VERTEX_FORMAT_P3F_COL4UB_COL4UB_TEX2F*)0)->st[0]), // VERTEX_FORMAT_P3F_COL4UB_COL4UB_TEX2F=4, // usually plants (24 bytes)
|
||||
(int)&(((struct_VERTEX_FORMAT_P3F_N_COL4UB_COL4UB_TEX2F*)0)->st[0]), // VERTEX_FORMAT_P3F_N_COL4UB_COL4UB_TEX2F=4, // usually plants (24 bytes)
|
||||
};
|
||||
|
||||
|
||||
// this is the table of offsets of colors relative to the start of the structure
|
||||
// -1 means there's no colors in this format
|
||||
// This is required by Animation and must be kept in tact with the vertex format enumeration
|
||||
const int g_VertFormatRGBAOffsets[] =
|
||||
{
|
||||
-1, // invalid format
|
||||
-1,
|
||||
(int)&(((struct_VERTEX_FORMAT_P3F_COL4UB*)0)->color.dcolor),
|
||||
-1,
|
||||
(int)&(((struct_VERTEX_FORMAT_P3F_COL4UB_TEX2F*)0)->color.dcolor),
|
||||
(int)&(((struct_VERTEX_FORMAT_TRP3F_COL4UB_TEX2F*)0)->color.dcolor),
|
||||
(int)&(((struct_VERTEX_FORMAT_P3F_COL4UB_COL4UB*)0)->color.dcolor),
|
||||
-1,
|
||||
(int)&(((struct_VERTEX_FORMAT_P3F_N_COL4UB*)0)->color.dcolor),
|
||||
-1,
|
||||
(int)&(((struct_VERTEX_FORMAT_P3F_N_COL4UB_TEX2F*)0)->color.dcolor),
|
||||
(int)&(((struct_VERTEX_FORMAT_P3F_N_COL4UB_COL4UB*)0)->color.dcolor),
|
||||
(int)&(((struct_VERTEX_FORMAT_P3F_COL4UB_COL4UB_TEX2F*)0)->color.dcolor),
|
||||
(int)&(((struct_VERTEX_FORMAT_P3F_N_COL4UB_COL4UB_TEX2F*)0)->color.dcolor),
|
||||
};
|
||||
|
||||
// this is the table of offsets of normals relative to the start of the structure
|
||||
// -1 means there's no colors in this format
|
||||
// This is required by Animation and must be kept in tact with the vertex format enumeration
|
||||
const int g_VertFormatNormalOffsets[] =
|
||||
{
|
||||
-1, // invalid format
|
||||
-1, // VERTEX_FORMAT_P3F=1
|
||||
-1, // VERTEX_FORMAT_P3F_COL4UB=2,
|
||||
-1, // VERTEX_FORMAT_P3F_TEX2F=3,
|
||||
-1, // VERTEX_FORMAT_P3F_COL4UB_TEX2F=4,
|
||||
-1, // VERTEX_FORMAT_TRP3F_COL4UB_TEX2F=5,
|
||||
-1, // VERTEX_FORMAT_P3F_COL4UB_COL4UB,
|
||||
(int)&(((struct_VERTEX_FORMAT_P3F_N*)0)->normal), // VERTEX_FORMAT_P3F_N=1,
|
||||
(int)&(((struct_VERTEX_FORMAT_P3F_N_COL4UB*)0)->normal), // VERTEX_FORMAT_P3F_N_COL4UB=1,
|
||||
(int)&(((struct_VERTEX_FORMAT_P3F_N_TEX2F*)0)->normal), // VERTEX_FORMAT_P3F_N_TEX2F=3, // everything else (20 bytes)
|
||||
(int)&(((struct_VERTEX_FORMAT_P3F_N_COL4UB_TEX2F*)0)->normal), // VERTEX_FORMAT_P3F_N_COL4UB_TEX2F=4, // usually plants (24 bytes)
|
||||
(int)&(((struct_VERTEX_FORMAT_P3F_N_COL4UB_COL4UB*)0)->normal),
|
||||
-1,
|
||||
(int)&(((struct_VERTEX_FORMAT_P3F_N_COL4UB_COL4UB_TEX2F*)0)->normal),
|
||||
};
|
||||
|
||||
static struct SBufInfoTable gBufInfoTable[] =
|
||||
{
|
||||
{
|
||||
0
|
||||
},
|
||||
{ //VERTEX_FORMAT_P3F
|
||||
#define OOFS(x) (int)&(((struct_VERTEX_FORMAT_P3F *)0)->x)
|
||||
0
|
||||
#undef OOFS
|
||||
},
|
||||
{ //VERTEX_FORMAT_P3F_COL4UB
|
||||
#define OOFS(x) (int)&(((struct_VERTEX_FORMAT_P3F_COL4UB *)0)->x)
|
||||
0,
|
||||
OOFS(color.dcolor),
|
||||
#undef OOFS
|
||||
},
|
||||
{ //VERTEX_FORMAT_P3F_TEX2F
|
||||
#define OOFS(x) (int)&(((struct_VERTEX_FORMAT_P3F_TEX2F *)0)->x)
|
||||
OOFS(st[0])
|
||||
#undef OOFS
|
||||
},
|
||||
{ //VERTEX_FORMAT_P3F_COL4UB_TEX2F
|
||||
#define OOFS(x) (int)&(((struct_VERTEX_FORMAT_P3F_COL4UB_TEX2F *)0)->x)
|
||||
OOFS(st[0]),
|
||||
OOFS(color.dcolor)
|
||||
#undef OOFS
|
||||
},
|
||||
{ //VERTEX_FORMAT_TRP3F_COL4UB_TEX2F
|
||||
#define OOFS(x) (int)&(((struct_VERTEX_FORMAT_TRP3F_COL4UB_TEX2F *)0)->x)
|
||||
OOFS(st[0]),
|
||||
OOFS(color.dcolor),
|
||||
#undef OOFS
|
||||
},
|
||||
{ //VERTEX_FORMAT_P3F_COL4UB_COL4UB
|
||||
#define OOFS(x) (int)&(((struct_VERTEX_FORMAT_P3F_COL4UB_COL4UB *)0)->x)
|
||||
0,
|
||||
OOFS(color.dcolor),
|
||||
OOFS(seccolor.dcolor),
|
||||
#undef OOFS
|
||||
},
|
||||
{ //VERTEX_FORMAT_P3F_N
|
||||
#define OOFS(x) (int)&(((struct_VERTEX_FORMAT_P3F_N *)0)->x)
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
OOFS(normal.x),
|
||||
#undef OOFS
|
||||
},
|
||||
{ //VERTEX_FORMAT_P3F_N_COL4UB
|
||||
#define OOFS(x) (int)&(((struct_VERTEX_FORMAT_P3F_N_COL4UB *)0)->x)
|
||||
0,
|
||||
OOFS(color.dcolor),
|
||||
0,
|
||||
OOFS(normal.x),
|
||||
#undef OOFS
|
||||
},
|
||||
{ //VERTEX_FORMAT_P3F_N_TEX2F
|
||||
#define OOFS(x) (int)&(((struct_VERTEX_FORMAT_P3F_N_TEX2F *)0)->x)
|
||||
OOFS(st[0]),
|
||||
0,
|
||||
0,
|
||||
OOFS(normal.x),
|
||||
#undef OOFS
|
||||
},
|
||||
{ //VERTEX_FORMAT_P3F_N_COL4UB_TEX2F
|
||||
#define OOFS(x) (int)&(((struct_VERTEX_FORMAT_P3F_N_COL4UB_TEX2F *)0)->x)
|
||||
OOFS(st[0]),
|
||||
OOFS(color.dcolor),
|
||||
0,
|
||||
OOFS(normal.x),
|
||||
#undef OOFS
|
||||
},
|
||||
{ //VERTEX_FORMAT_P3F_N_COL4UB_COL4UB
|
||||
#define OOFS(x) (int)&(((struct_VERTEX_FORMAT_P3F_N_COL4UB_COL4UB *)0)->x)
|
||||
0,
|
||||
OOFS(color.dcolor),
|
||||
OOFS(seccolor.dcolor),
|
||||
OOFS(normal.x),
|
||||
#undef OOFS
|
||||
},
|
||||
{ //VERTEX_FORMAT_P3F_COL4UB_COL4UB_TEX2F
|
||||
#define OOFS(x) (int)&(((struct_VERTEX_FORMAT_P3F_COL4UB_COL4UB_TEX2F *)0)->x)
|
||||
OOFS(st[0]),
|
||||
OOFS(color.dcolor),
|
||||
OOFS(seccolor.dcolor),
|
||||
0,
|
||||
#undef OOFS
|
||||
},
|
||||
{ //VERTEX_FORMAT_P3F_N_COL4UB_COL4UB_TEX2F
|
||||
#define OOFS(x) (int)&(((struct_VERTEX_FORMAT_P3F_N_COL4UB_COL4UB_TEX2F *)0)->x)
|
||||
OOFS(st[0]),
|
||||
OOFS(color.dcolor),
|
||||
OOFS(seccolor.dcolor),
|
||||
OOFS(normal.x),
|
||||
#undef OOFS
|
||||
},
|
||||
};
|
||||
|
||||
#ifdef WIN64
|
||||
#pragma warning(pop)
|
||||
#endif
|
||||
|
||||
_inline void GetVertBufComps(SVertBufComps *Comps, int Format)
|
||||
{
|
||||
memset(Comps, 0, sizeof(SVertBufComps));
|
||||
if (gBufInfoTable[Format].OffsTC)
|
||||
Comps->m_bHasTC = true;
|
||||
if (gBufInfoTable[Format].OffsColor)
|
||||
Comps->m_bHasColors = true;
|
||||
if (gBufInfoTable[Format].OffsSecColor)
|
||||
Comps->m_bHasSecColors = true;
|
||||
if (gBufInfoTable[Format].OffsNormal)
|
||||
Comps->m_bHasNormals = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user