00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef _CEGUIDirect3D11Texture_h_
00028 #define _CEGUIDirect3D11Texture_h_
00029
00030 #include "../../CEGUITexture.h"
00031 #include "CEGUIDirect3D11Renderer.h"
00032 #include "../../CEGUISize.h"
00033 #include "../../CEGUIVector.h"
00034
00035
00036 struct ID3D11Device;
00037 struct ID3D11DeviceContext;
00038 struct ID3D11Texture2D;
00039 struct ID3D11ShaderResourceView;
00040
00041
00042
00043
00044 namespace CEGUI
00045 {
00047 class D3D11_GUIRENDERER_API Direct3D11Texture : public Texture
00048 {
00049 public:
00055 void setDirect3DTexture(ID3D11Texture2D* tex);
00056
00064 ID3D11Texture2D* getDirect3DTexture() const;
00065
00073 ID3D11ShaderResourceView* getDirect3DShaderResourceView() const;
00074
00082 void setOriginalDataSize(const Size& sz);
00083
00084
00085 const Size& getSize() const;
00086 const Size& getOriginalDataSize() const;
00087 const Vector2& getTexelScaling() const;
00088 void loadFromFile(const String& filename, const String& resourceGroup);
00089 void loadFromMemory(const void* buffer, const Size& buffer_size,
00090 PixelFormat pixel_format);
00091 void saveToMemory(void* buffer);
00092
00093 protected:
00094
00095 friend Texture& Direct3D11Renderer::createTexture();
00096 friend Texture& Direct3D11Renderer::createTexture(const String&, const String&);
00097 friend Texture& Direct3D11Renderer::createTexture(const Size&);
00098
00099 friend void Direct3D11Renderer::destroyTexture(Texture&);
00100
00102 Direct3D11Texture(IDevice11& device);
00104 Direct3D11Texture(IDevice11& device, const String& filename,
00105 const String& resourceGroup);
00107 Direct3D11Texture(IDevice11& device, const Size& sz);
00109 Direct3D11Texture(IDevice11& device, ID3D11Texture2D* tex);
00111 virtual ~Direct3D11Texture();
00112
00114 void cleanupDirect3D11Texture();
00116 void updateCachedScaleValues();
00118 void updateTextureSize();
00120 void initialiseShaderResourceView();
00121
00123 IDevice11& d_device;
00125 ID3D11Texture2D* d_texture;
00127 ID3D11ShaderResourceView* d_resourceView;
00129 Size d_size;
00131 Size d_dataSize;
00133 Vector2 d_texelScaling;
00134 };
00135
00136
00137 }
00138
00139 #endif // end of guard _CEGUIDirect3D11Texture_h_