#include "dxstdafx.h" #include ".\flexvertex.h" unsigned int FlexVertex::posByteOffset(0); unsigned int FlexVertex::normalByteOffset(12); unsigned int FlexVertex::diffuseByteOffset(24); unsigned int FlexVertex::specularByteOffset(28); unsigned int FlexVertex::texByteOffset[16] = { 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128, 136, 144, 152}; unsigned int FlexVertex::nTex = 2; void FlexVertex::setFormat(D3DVERTEXELEMENT9* decl) { int i=0; nTex = 0; while(decl[i].Type != D3DDECLTYPE_UNUSED) { if(decl[i].Usage == D3DDECLUSAGE_POSITION) posByteOffset = decl[i].Offset; if(decl[i].Usage == D3DDECLUSAGE_NORMAL) normalByteOffset = decl[i].Offset; if(decl[i].Usage == D3DDECLUSAGE_COLOR) { if(decl[i].UsageIndex == 0) diffuseByteOffset = decl[i].Offset; if(decl[i].UsageIndex == 1) specularByteOffset = decl[i].Offset; } if(decl[i].Usage == D3DDECLUSAGE_TEXCOORD) { texByteOffset[decl[i].UsageIndex] = decl[i].Offset; if(decl[i].UsageIndex >= nTex) nTex = decl[i].UsageIndex+1; } i++; } }