//============================================================================= // Vertex.cpp by Frank Luna (C) 2005 All Rights Reserved. //============================================================================= #include "Vertex.h" #include "d3dUtil.h" // Initialize static variables. IDirect3DVertexDeclaration9* VertexPos::Decl = 0; IDirect3DVertexDeclaration9* VertexCol::Decl = 0; IDirect3DVertexDeclaration9* VertexPN::Decl = 0; IDirect3DVertexDeclaration9* VertexPNT::Decl = 0; IDirect3DVertexDeclaration9* GrassVertex::Decl = 0; IDirect3DVertexDeclaration9* NMapVertex::Decl = 0; void InitAllVertexDeclarations() { //=============================================================== // VertexPos D3DVERTEXELEMENT9 VertexPosElements[] = { {0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0}, D3DDECL_END() }; HR(gd3dDevice->CreateVertexDeclaration(VertexPosElements, &VertexPos::Decl)); //=============================================================== // VertexCol D3DVERTEXELEMENT9 VertexColElements[] = { {0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0}, {0, 12, D3DDECLTYPE_D3DCOLOR, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_COLOR, 0}, D3DDECL_END() }; HR(gd3dDevice->CreateVertexDeclaration(VertexColElements, &VertexCol::Decl)); //=============================================================== // VertexPN D3DVERTEXELEMENT9 VertexPNElements[] = { {0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0}, {0, 12, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_NORMAL, 0}, D3DDECL_END() }; HR(gd3dDevice->CreateVertexDeclaration(VertexPNElements, &VertexPN::Decl)); //=============================================================== // VertexPNT D3DVERTEXELEMENT9 VertexPNTElements[] = { {0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0}, {0, 12, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_NORMAL, 0}, {0, 24, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0}, D3DDECL_END() }; HR(gd3dDevice->CreateVertexDeclaration(VertexPNTElements, &VertexPNT::Decl)); //=============================================================== // GrassVertex D3DVERTEXELEMENT9 GrassVertexElements[] = { {0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0}, {0, 12, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0}, {0, 24, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 1}, {0, 32, D3DDECLTYPE_FLOAT1, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 2}, {0, 36, D3DDECLTYPE_D3DCOLOR, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_COLOR, 0}, D3DDECL_END() }; HR(gd3dDevice->CreateVertexDeclaration(GrassVertexElements, &GrassVertex::Decl)); //=============================================================== // NMapVertex D3DVERTEXELEMENT9 NMapVertexElements[] = { {0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0}, {0, 12, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TANGENT, 0}, {0, 24, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_BINORMAL, 0}, {0, 36, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_NORMAL, 0}, {0, 48, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0}, D3DDECL_END() }; HR(gd3dDevice->CreateVertexDeclaration(NMapVertexElements, &NMapVertex::Decl)); } void DestroyAllVertexDeclarations() { ReleaseCOM(VertexPos::Decl); ReleaseCOM(VertexCol::Decl); ReleaseCOM(VertexPN::Decl); ReleaseCOM(VertexPNT::Decl); ReleaseCOM(GrassVertex::Decl); ReleaseCOM(NMapVertex::Decl); }