1 /*!
2 	@file
3 	@author		Ustinov Igor aka Igor', DadyaIgor
4 	@date		09/2011
5 */
6 
7 #ifndef MYGUI_DIRECTX11_TEXTURE_H_
8 #define MYGUI_DIRECTX11_TEXTURE_H_
9 
10 #include "MyGUI_Prerequest.h"
11 #include "MyGUI_ITexture.h"
12 #include "MyGUI_RenderFormat.h"
13 #include "MyGUI_Types.h"
14 
15 struct IDirect3DTexture9;
16 
17 namespace MyGUI
18 {
19 	class DirectX11RenderManager;
20 	class DirectX11RTTexture;
21 
22 	class DirectX11Texture : public ITexture
23 	{
24 	public:
25 		DirectX11Texture(const std::string& _name, DirectX11RenderManager* _manager);
26 		virtual ~DirectX11Texture();
27 
28 		virtual const std::string& getName() const;
29 
30 		virtual void createManual(int _width, int _height, TextureUsage _usage, PixelFormat _format);
31 		virtual void loadFromFile(const std::string& _filename);
saveToFile(const std::string & _filename)32 		virtual void saveToFile(const std::string& _filename) { }
33 
34 		virtual void destroy();
35 
36 		virtual void* lock(TextureUsage _access);
37 		virtual void unlock();
38 		virtual bool isLocked();
39 
40 		virtual int getWidth();
41 		virtual int getHeight();
42 
43 		virtual PixelFormat  getFormat();
44 		virtual TextureUsage getUsage();
45 		virtual size_t       getNumElemBytes();
46 
47 		virtual IRenderTarget* getRenderTarget();
48 
49 	private:
50 		friend class DirectX11RTTexture;
51 		ID3D11Texture2D*          mTexture;
52 		void*                     mWriteData;
53 
54 	public:
55 		ID3D11ShaderResourceView* mResourceView;
56 
57 	private:
58 		int                       mWidth;
59 		int                       mHeight;
60 		TextureUsage              mTextureUsage;
61 		size_t                    mNumElemBytes;
62 		std::string               mName;
63 		bool                      mLock;
64 		DirectX11RTTexture*       mRenderTarget;
65 		DirectX11RenderManager*   mManager;
66 	};
67 
68 } // namespace MyGUI
69 
70 #endif // MYGUI_DIRECTX11_TEXTURE_H_
71