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

Revision 1484, 1.7 KB checked in by szirmay, 18 years ago (diff)
Line 
1#include "dxstdafx.h"
2#include ".\dxtexture.h"
3#include <d3dx9.h>
4#include <dxerr9.h>
5
6
7CDXTexture::CDXTexture()
8{
9        SetStage(0);
10        m_Stencil = NULL;
11        m_Tex = NULL;
12        m_pBackBuffer = NULL;
13        m_OrigDepthStencil = NULL;
14        m_RTindex = 0;
15}
16
17CDXTexture::~CDXTexture(void)
18{
19        SAFE_RELEASE(m_Tex);
20        SAFE_RELEASE(m_Stencil);
21        SAFE_RELEASE(m_pBackBuffer);
22        SAFE_RELEASE(m_OrigDepthStencil);
23}
24
25bool CDXTexture::InitTex(LPDIRECT3DDEVICE9 dev, char* filename, char* tex_name, D3DFORMAT format)
26{
27        CopyToName(tex_name);
28       
29        m_Dev = dev;
30       
31        D3DXIMAGE_INFO info;
32       
33        D3DXCreateTextureFromFileEx(
34                dev,               // device
35                (LPCWSTR)filename,      // filename
36                D3DX_DEFAULT,  // x size
37                D3DX_DEFAULT,  // y size
38                D3DX_DEFAULT,  // mipmap
39                0,                         // usage
40                format,// a tárolási formát a file határozza meg
41                D3DPOOL_DEFAULT,// a videomemóriába legyen
42                D3DX_DEFAULT,  // filterek
43                D3DX_DEFAULT,  // mipmap filter
44                0,             // nincs colorkey
45                &info,         // file infókat ide adja
46                NULL,
47                &m_Tex);
48       
49        return true;
50}
51
52bool CDXTexture::InitTex(LPDIRECT3DDEVICE9 dev, char* tex_name, int width, int height, D3DFORMAT format, bool mipmapped)
53{
54        CopyToName(tex_name);
55
56        m_Dev = dev;
57        m_Width = width;
58        m_Height = height;
59        // create new texture
60        HRESULT res = D3DXCreateTexture(m_Dev, width, height, mipmapped ? 0 : 1, D3DUSAGE_RENDERTARGET, format, D3DPOOL_DEFAULT, &m_Tex);
61        if (res != D3D_OK)
62        {
63                return false;
64        }
65        res = m_Dev->CreateDepthStencilSurface(width, height, D3DFMT_D24S8, D3DMULTISAMPLE_NONE,0,true,&m_Stencil,NULL);
66        if (res != D3D_OK){
67                return false;
68        }
69       
70        return true;
71}
72
73
74
75void CDXTexture::CopyToName(char* name)
76{
77        if (strlen(name) > 512)
78                name[500] = '\0';
79       
80        strcpy(m_Name, name);
81}
Note: See TracBrowser for help on using the repository browser.