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
00028 #ifndef _CEGUIDirect3D10Texture_h_
00029 #define _CEGUIDirect3D10Texture_h_
00030
00031 #include "../../CEGUITexture.h"
00032 #include "CEGUIDirect3D10Renderer.h"
00033 #include "../../CEGUISize.h"
00034 #include "../../CEGUIVector.h"
00035
00036
00037 struct ID3D10Device;
00038 struct ID3D10Texture2D;
00039 struct ID3D10ShaderResourceView;
00040
00041
00042 namespace CEGUI
00043 {
00045 class D3D10_GUIRENDERER_API Direct3D10Texture : public Texture
00046 {
00047 public:
00053 void setDirect3DTexture(ID3D10Texture2D* tex);
00054
00062 ID3D10Texture2D* getDirect3DTexture() const;
00063
00071 ID3D10ShaderResourceView* getDirect3DShaderResourceView() const;
00072
00080 void setOriginalDataSize(const Size& sz);
00081
00082
00083 const Size& getSize() const;
00084 const Size& getOriginalDataSize() const;
00085 const Vector2& getTexelScaling() const;
00086 void loadFromFile(const String& filename, const String& resourceGroup);
00087 void loadFromMemory(const void* buffer, const Size& buffer_size,
00088 PixelFormat pixel_format);
00089 void saveToMemory(void* buffer);
00090
00091 protected:
00092
00093 friend Texture& Direct3D10Renderer::createTexture();
00094 friend Texture& Direct3D10Renderer::createTexture(const String&, const String&);
00095 friend Texture& Direct3D10Renderer::createTexture(const Size&);
00096
00097 friend void Direct3D10Renderer::destroyTexture(Texture&);
00098
00100 Direct3D10Texture(ID3D10Device& device);
00102 Direct3D10Texture(ID3D10Device& device, const String& filename,
00103 const String& resourceGroup);
00105 Direct3D10Texture(ID3D10Device& device, const Size& sz);
00107 Direct3D10Texture(ID3D10Device& device, ID3D10Texture2D* tex);
00109 virtual ~Direct3D10Texture();
00110
00112 void cleanupDirect3D10Texture();
00114 void updateCachedScaleValues();
00116 void updateTextureSize();
00118 void initialiseShaderResourceView();
00119
00121 ID3D10Device& d_device;
00123 ID3D10Texture2D* d_texture;
00125 ID3D10ShaderResourceView* d_resourceView;
00127 Size d_size;
00129 Size d_dataSize;
00131 Vector2 d_texelScaling;
00132 };
00133
00134
00135 }
00136
00137 #endif // end of guard _CEGUIDirect3D10Texture_h_