#pragma once #include "ITexture.h" #include "IFileSystem.h" #include "../ShaderParameterCollection/ShaderParameterCollection.h" #include "../../Commands/CommandUserBase.h" class Texture : public ITexture , public ShaderParameterCollection { public: Texture(IEngine& argEngine); virtual ~Texture(); virtual void Uninitialize(); // ITexture virtual string8 get_BindingName() const { return m_TextureBindingName; } virtual void set_BindingName(const string8& argName); virtual string16 get_FileName() const { return m_FileName; } virtual uint32 get_TextureWidth() const{ return m_TextureWidth; } virtual uint32 get_TextureHeight() const { return m_TextureHeight; } virtual uint32 get_TextureArraySize() const { return m_TextureArraySize; } virtual DataFormat::Enumeration get_TextureFormat() const{ return m_TextureFormat; } virtual void LoadFromFile(const string16& argFileName, DataAccessType::Enumeration argAccessType = DataAccessType::Static); virtual void CreateTexture(const CreateTextureDescriptor& argDesc); virtual LockedTextureData LockTextureBuffer(DataAccessMode::Enumeration argAccessMode, uint32 argArrayElement = 0); virtual void UnlockTextureBuffer(); virtual void CreateRenderTargetTexture(uint32 argWidth, uint32 argHeight, DataFormat::Enumeration argFormat, uint32 argMultiSampleCount, uint32 argMultiSampleQuality); virtual ID3D10ShaderResourceView* get_ResourceViewFromTexture() const { return m_ShaderResourceView; } virtual ID3D10Texture2D* get_Texture2D() const { return m_Texture; } protected: // ICommandUser virtual string8 get_UserName() const { return "Texture"; } protected: void CreateTexture(uint32 argWidth, uint32 argHeight, uint32 argMipLevels, uint32 m_Elements, DataFormat::Enumeration argFormat, TextureInitialData* ar_InitialData_, DataAccessType::Enumeration argAccessType, bool argRenderTarget, uint32 argMultiSampleCount, uint32 argMultiSampleQuality); private: ID3D10Buffer* m_TextureBuffer; ID3D10Resource* m_TextureResource; ID3D10ShaderResourceView* m_ShaderResourceView; ID3D10Texture2D* m_Texture; string16 m_FileName; uint32 m_TextureWidth; uint32 m_TextureHeight; uint32 m_TextureArraySize; DataFormat::Enumeration m_TextureFormat; bool m_LockedTexture; uint32 m_LockedArrayElement; string8 m_TextureBindingName; };