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
5 #ifndef __C_DIRECTX9_TEXTURE_H_INCLUDED__
\r
6 #define __C_DIRECTX9_TEXTURE_H_INCLUDED__
\r
8 #include "IrrCompileConfig.h"
\r
9 #ifdef _IRR_COMPILE_WITH_DIRECT3D_9_
\r
11 #include "irrArray.h"
\r
12 #include "ITexture.h"
\r
14 #if defined(__BORLANDC__) || defined (__BCPLUSPLUS__)
\r
15 #include "irrMath.h" // needed by borland for sqrtf define
\r
26 class CD3D9Texture : public ITexture
\r
29 CD3D9Texture(const io::path& name, const core::array<IImage*>& image, E_TEXTURE_TYPE type, CD3D9Driver* driver);
\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
33 virtual ~CD3D9Texture();
\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
37 virtual void unlock() _IRR_OVERRIDE_;
\r
39 virtual void regenerateMipMapLevels(void* data = 0, u32 layer = 0) _IRR_OVERRIDE_;
\r
41 IDirect3DBaseTexture9* getDX9BaseTexture() const;
\r
42 IDirect3DTexture9* getDX9Texture() const;
\r
43 IDirect3DCubeTexture9* getDX9CubeTexture() const;
\r
46 friend class CD3D9Driver;
\r
48 void releaseTexture();
\r
50 void generateRenderTarget();
\r
52 ECOLOR_FORMAT getBestColorFormat(ECOLOR_FORMAT format);
\r
54 void getImageValues(const IImage* image);
\r
56 void uploadTexture(void* data, u32 mipmapLevel, u32 layer);
\r
58 //! Helper function for mipmap generation.
\r
59 bool createManualMipMaps(u32 level);
\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
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
70 CD3D9Driver* Driver;
\r
72 D3DFORMAT InternalFormat;
\r
79 bool HardwareMipMaps;
\r
81 IDirect3DDevice9* Device;
\r
82 IDirect3DTexture9* Texture;
\r
83 IDirect3DCubeTexture9* CubeTexture;
\r
84 IDirect3DSurface9* RTTSurface;
\r