1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
tbResult InitScene()
{ // ... snip
// Beleuchtung und Culling ausschalten, Dithering aktivieren
D3D.SetRS(D3DRS_LIGHTING, FALSE);
D3D.SetRS(D3DRS_ZENABLE, TRUE);
D3D.SetRS(D3DRS_CULLMODE, D3DCULL_NONE);
D3D.SetRS(D3DRS_DITHERENABLE, TRUE);
D3D.SetRS(D3DRS_FILLMODE, D3DFILL_SOLID);
// Vertex- und IndexBuffer erstellen 1 Cube
int iNumVertices = g_iNumCubes * 8;
//
g_pCubesVB = new tbVertexBuffer;
if(g_pCubesVB->Init(iNumVertices * sizeof(SVertex),
sizeof(SVertex),
SVertex::dwFVF,
D3DUSAGE_DYNAMIC | D3DUSAGE_WRITEONLY,
D3DPOOL_DEFAULT))
{
return TB_ERROR;
}
// IndexBuffer erstellen
int iNumIndices = g_iNumCubes * 6 * 6;
g_pCubesIB = new tbIndexBuffer;
if(g_pCubesIB->Init(iNumIndices * sizeof(WORD), sizeof(WORD),D3DFMT_INDEX16))
{
return TB_ERROR;
}
aVertex[0].vPosition=tbVector3(-1.0f,-1.0f,-1.0f);
aVertex[0].Color = tbColor(0.0f, 0.0f, 1.0f);
aVertex[1].vPosition=tbVector3(-1.0f, 1.0f,-1.0f);
aVertex[1].Color = tbColor(0.0f, 1.0f, 0.0f);
aVertex[2].vPosition=tbVector3( 1.0f, 1.0f,-1.0f);
aVertex[2].Color = tbColor(1.0f, 0.0f, 0.0f);
aVertex[3].vPosition=tbVector3( 1.0f,-1.0f,-1.0f);
aVertex[3].Color = tbColor(1.0f, 0.0f, 0.0f);
// später Farben nachtragen
aVertex[4].vPosition=tbVector3(-1.0f,-1.0f,1.0f);
aVertex[5].vPosition=tbVector3(-1.0f,1.0f,1.0f);
aVertex[6].vPosition=tbVector3( 1.0f, 1.0f, 1.0f);
aVertex[7].vPosition=tbVector3( 1.0f,-1.0f, 1.0f);
int aiIndex[36] = {
0,1,2, 0,2,3, // fronts side
4,6,5, 4,7,6, // back side
4,5,1, 4,1,0, // left side
4,5,1, 4,1,0, // right side
3,2,6, 3,6,7,
4,0,3, 4,3,7
};
for(int i=0;i<36;i++)
{
WORD wIndex;
wIndex = aiIndex[i]; g_pCubesIB->AddIndex(&wIndex);
}
// ... snip
}
|