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
|
CTexture::CTexture(char* Filename)
{
m_pTexture = NULL;
LoadTexture(Filename);
VERTEXQUAD VertexQuad[] =
{
{-1.0f,-1.0f, 1.0f, 0.0f,0.0f},
{ 1.0f,-1.0f, 1.0f, 1.0f,0.0f},
{-1.0f, 1.0f, 1.0f, 0.0f,1.0f},
{ 1.0f, 1.0f, 1.0f, 1.0f,1.0f}
};
void* pVoid;
if(SUCCEEDED(g_pD3D->GetVB()->Lock(0, sizeof(VertexQuad), (void**)&pVoid, 0)))
{
memcpy(pVoid, VertexQuad, sizeof(VertexQuad));
g_pD3D->GetVB()->Unlock();
}
}
CTexture::~CTexture()
{
if(m_pTexture != NULL){
m_pTexture->Release();
m_pTexture = NULL;
}
}
void CTexture::LoadTexture(char* Filename)
{
D3DXCreateTextureFromFile(g_pD3D->GetDevice(), (LPCWSTR)Filename, &m_pTexture);
g_pD3D->GetDevice()->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
g_pD3D->GetDevice()->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
g_pD3D->GetDevice()->SetTexture(0, m_pTexture);
}
void CTexture::Render()
{
g_pD3D->GetDevice()->SetStreamSource(0, g_pD3D->GetVB(), 0, sizeof(VERTEXQUAD));
g_pD3D->GetDevice()->SetFVF(D3DFVF_QUAD);
g_pD3D->GetDevice()->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
}
|