]> git.lizzy.rs Git - irrlicht.git/blob - source/Irrlicht/CD3D9Texture.h
CIrrDeviceWin32: drop all video mode code
[irrlicht.git] / source / Irrlicht / CD3D9Texture.h
1 // Copyright (C) 2002-2012 Nikolaus Gebhardt\r
2 // This file is part of the "Irrlicht Engine".\r
3 // For conditions of distribution and use, see copyright notice in irrlicht.h\r
4 \r
5 #ifndef __C_DIRECTX9_TEXTURE_H_INCLUDED__\r
6 #define __C_DIRECTX9_TEXTURE_H_INCLUDED__\r
7 \r
8 #include "IrrCompileConfig.h"\r
9 #ifdef _IRR_COMPILE_WITH_DIRECT3D_9_\r
10 \r
11 #include "irrArray.h"\r
12 #include "ITexture.h"\r
13 #include "IImage.h"\r
14 #if defined(__BORLANDC__) || defined (__BCPLUSPLUS__)\r
15 #include "irrMath.h"    // needed by borland for sqrtf define\r
16 #endif\r
17 #include <d3d9.h>\r
18 \r
19 namespace irr\r
20 {\r
21 namespace video\r
22 {\r
23 \r
24 class CD3D9Driver;\r
25 \r
26 class CD3D9Texture : public ITexture\r
27 {\r
28 public:\r
29         CD3D9Texture(const io::path& name, const core::array<IImage*>& image, E_TEXTURE_TYPE type, CD3D9Driver* driver);\r
30 \r
31         CD3D9Texture(CD3D9Driver* driver, const core::dimension2d<u32>& size, const io::path& name, E_TEXTURE_TYPE type, const ECOLOR_FORMAT format = ECF_UNKNOWN);\r
32 \r
33         virtual ~CD3D9Texture();\r
34 \r
35         virtual void* lock(E_TEXTURE_LOCK_MODE mode = ETLM_READ_WRITE, u32 mipmapLevel=0, u32 layer = 0, E_TEXTURE_LOCK_FLAGS lockFlags = ETLF_FLIP_Y_UP_RTT) _IRR_OVERRIDE_;\r
36 \r
37         virtual void unlock() _IRR_OVERRIDE_;\r
38 \r
39         virtual void regenerateMipMapLevels(void* data = 0, u32 layer = 0) _IRR_OVERRIDE_;\r
40 \r
41         IDirect3DBaseTexture9* getDX9BaseTexture() const;\r
42         IDirect3DTexture9* getDX9Texture() const;\r
43         IDirect3DCubeTexture9* getDX9CubeTexture() const;\r
44 \r
45 private:\r
46         friend class CD3D9Driver;\r
47 \r
48         void releaseTexture();\r
49 \r
50         void generateRenderTarget();\r
51 \r
52         ECOLOR_FORMAT getBestColorFormat(ECOLOR_FORMAT format);\r
53 \r
54         void getImageValues(const IImage* image);\r
55 \r
56         void uploadTexture(void* data, u32 mipmapLevel, u32 layer);\r
57 \r
58         //! Helper function for mipmap generation.\r
59         bool createManualMipMaps(u32 level);\r
60 \r
61         //! Helper function for mipmap generation.\r
62         void copy16BitMipMap(char* src, char* tgt,\r
63                 s32 width, s32 height,  s32 pitchsrc, s32 pitchtgt) const;\r
64 \r
65         //! Helper function for mipmap generation.\r
66         void copy32BitMipMap(char* src, char* tgt,\r
67                 s32 width, s32 height,  s32 pitchsrc, s32 pitchtgt) const;\r
68 \r
69 \r
70         CD3D9Driver* Driver;\r
71 \r
72         D3DFORMAT InternalFormat;\r
73 \r
74         bool LockReadOnly;\r
75         void* LockData;\r
76         u32 LockLayer;\r
77         u32 MipLevelLocked;\r
78 \r
79         bool HardwareMipMaps;\r
80 \r
81         IDirect3DDevice9* Device;\r
82         IDirect3DTexture9* Texture;\r
83         IDirect3DCubeTexture9* CubeTexture;\r
84         IDirect3DSurface9* RTTSurface;\r
85 };\r
86 \r
87 }\r
88 }\r
89 \r
90 #endif\r
91 #endif\r