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
|
#include"Model.h"
void Model::InitModel(LPDIRECT3DDEVICE9 d3ddev)
{
device = d3ddev;
D3DXLoadMeshFromX("C:\\Team17\\Würfel.x",D3DXMESH_SYSTEMMEM,d3ddev,NULL,&materialBuffer,NULL,&numMaterials,&mesh);
d3dxMaterials = (D3DXMATERIAL*)materialBuffer->GetBufferPointer();
meshMaterials = new D3DMATERIAL9[numMaterials];
meshTextures = new LPDIRECT3DTEXTURE9[numMaterials];
for(DWORD i = 0;i < numMaterials;i++)
{
meshMaterials[i] = d3dxMaterials[i].MatD3D;
meshMaterials[i].Ambient = meshMaterials[i].Diffuse;
meshTextures[i] = NULL;
if(d3dxMaterials[i].pTextureFilename)
D3DXCreateTextureFromFile(d3ddev,d3dxMaterials[i].pTextureFilename,&meshTextures[i]);
}
}
void Model::RenderModel(void)
{
for(DWORD i = 0;i < numMaterials;i++)
{
device->SetMaterial(&meshMaterials[i]);
device->SetTexture(0,meshTextures[i]);
mesh->DrawSubset(i);
}
}
void Model::CleanModel(void)
{
materialBuffer->Release();
}
void Model::UpdateModel(D3DXVECTOR3 pos,D3DXVECTOR3 scal,D3DXVECTOR3 rot,std::string path)
{
D3DXMATRIX world,trans,scale,rotX,rotY,rotZ;
D3DXMatrixTranslation(&trans,pos.x,pos.y,pos.z);
D3DXMatrixScaling(&scale,scal.x,scal.y,scal.z);
D3DXMatrixRotationX(&rotX,rot.x);
D3DXMatrixRotationY(&rotY,rot.y);
D3DXMatrixRotationZ(&rotZ,rot.z);
world = scale*rotX*rotY*rotZ*trans;
device->SetTransform(D3DTS_WORLD,&world);
}
|