source: GTP/trunk/App/Demos/Illum/explosion_DX/Cube.cpp @ 1484

Revision 1484, 2.2 KB checked in by szirmay, 18 years ago (diff)
Line 
1
2#include "dxstdafx.h"
3//#include "Params.h"
4#include "Cube.h"
5
6#define D3DFVF_CUSTOMVERTEX                     (D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_TEX1)
7
8struct Vertex
9{
10        float x, y, z;
11        float nx, ny, nz;
12        float tu, tv;
13};
14
15Cube::Cube(IDirect3DDevice9* pd3dDevice)
16{
17        this->pd3dDevice = pd3dDevice;
18       
19        //pVertexBuffer
20
21        int vertexCnt = 24;
22        float s = 1;    // igazából mindegy a méret, mert csak a kocka skálázódik vele
23       
24        Vertex g_quadVertices[] =
25        {
26                // 1 lap = 2 háromszögbõl álló triangle_strip
27                // lapok körüljárási irányának megváltoztatása: a középsõ 2 vertex felcserélésével
28
29                //x  y  z        normal         texcoord
30                {-s, s, s,   0,0,-1,    0,0 },
31                {-s,-s, s,   0,0,-1,    0,1 },
32                { s, s, s,   0,0,-1,    1,0 },
33                { s,-s, s,   0,0,-1,    1,1 },
34
35                // z érték -1-szeres + 2. és 3. vertex cseréje
36                {-s, s, -s,   0,0,1,    0,0 },
37                { s, s, -s,   0,0,1,    1,0 },
38                {-s,-s, -s,   0,0,1,    0,1 },
39                { s,-s, -s,   0,0,1,    1,1 },
40
41                // y,z csere
42                {-s,-s, s,    0,1,0,    0,0 },
43                {-s,-s, -s,   0,1,0,    0,1 },
44                { s,-s, s,    0,1,0,    1,0 },
45                { s,-s, -s,   0,1,0,    1,1 },
46
47                {-s, s, s,   0,-1,0,    0,0 },
48                { s, s, s,   0,-1,0,    1,0 },
49                {-s, s,-s,   0,-1,0,    0,1 },
50                { s, s,-s,   0,-1,0,    1,1 },
51
52                // x,z csere
53                {-s, s,-s,    1,0,0,    0,0 },
54                {-s,-s,-s,    1,0,0,    0,1 },
55                {-s, s, s,    1,0,0,    1,0 },
56                {-s,-s, s,    1,0,0,    1,1 },
57
58                { s, s, -s,  -1,0,0,    0,0 },
59                { s, s,  s,  -1,0,0,    1,0 },
60                { s,-s, -s,  -1,0,0,    0,1 },
61                { s,-s,  s,  -1,0,0,    1,1 },
62        };
63
64        pd3dDevice->CreateVertexBuffer( vertexCnt*sizeof(Vertex), D3DUSAGE_WRITEONLY,
65                                                                        D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT,
66                                                                        &pVertexBuffer, NULL );
67        void *pVertices = NULL;
68
69        pVertexBuffer->Lock( 0, sizeof(g_quadVertices), (void**)&pVertices, 0 );
70        memcpy( pVertices, g_quadVertices, sizeof(g_quadVertices) );
71        pVertexBuffer->Unlock();
72}
73
74void Cube::PrepareDrawing()
75{
76        pd3dDevice->SetStreamSource( 0, pVertexBuffer, 0, sizeof(Vertex) );
77        pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
78}
79
80void Cube::DrawFace(int index)
81{
82        pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 4*index, 2 ); // startVertex, primitiveCnt
83}
84
85void Cube::Draw()
86{
87        for (int index = 0; index < 6; index++)
88                pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 4*index, 2 ); // startVertex, primitiveCnt
89}
Note: See TracBrowser for help on using the repository browser.