source: GTP/trunk/App/Demos/Illum/Standalone/pathmap [DirectX]/FlexVertex.cpp @ 2498

Revision 2498, 1.2 KB checked in by szirmay, 17 years ago (diff)
Line 
1#include "dxstdafx.h"
2#include ".\flexvertex.h"
3
4FlexFormat* FlexVertex::format = NULL;
5
6void FlexVertex::setFormat(FlexFormat* format)
7{
8        FlexVertex::format = format;
9}
10
11FlexFormat::FlexFormat()
12:
13posByteOffset(0),
14normalByteOffset(12),
15diffuseByteOffset(24),
16specularByteOffset(28),
17nTex(2)
18{
19        unsigned int ii[16] = {24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128, 136, 144};
20        for(int iu=0; iu<16; iu++)
21                texByteOffset[iu] = ii[iu];
22}
23
24void FlexVertexArray::setFormat(D3DVERTEXELEMENT9* decl)
25{
26        int i=0;
27        format.nTex = 0;
28        while(decl[i].Type != D3DDECLTYPE_UNUSED)
29        {
30                if(decl[i].Usage == D3DDECLUSAGE_POSITION)
31                        format.posByteOffset = decl[i].Offset;
32                if(decl[i].Usage == D3DDECLUSAGE_NORMAL)
33                        format.normalByteOffset = decl[i].Offset;
34                if(decl[i].Usage == D3DDECLUSAGE_COLOR)
35                {
36                        if(decl[i].UsageIndex == 0)
37                                format.diffuseByteOffset = decl[i].Offset;
38                        if(decl[i].UsageIndex == 1)
39                                format.specularByteOffset = decl[i].Offset;
40                }
41                if(decl[i].Usage == D3DDECLUSAGE_TEXCOORD)
42                {
43                        format.texByteOffset[decl[i].UsageIndex] = decl[i].Offset;
44                        if(decl[i].UsageIndex >= format.nTex)
45                                format.nTex = decl[i].UsageIndex+1;
46                }
47                i++;
48        }
49        FlexVertex::setFormat(&format);
50}
Note: See TracBrowser for help on using the repository browser.