CmTextureView.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #pragma once
  2. #include "CmPrerequisites.h"
  3. #include "CmCoreObject.h"
  4. #include "CmCommonEnums.h"
  5. namespace BansheeEngine
  6. {
  7. /**
  8. * @brief Data describing a texture view.
  9. */
  10. struct CM_EXPORT TEXTURE_VIEW_DESC
  11. {
  12. UINT32 mostDetailMip;
  13. UINT32 numMips;
  14. UINT32 firstArraySlice;
  15. UINT32 numArraySlices;
  16. GpuViewUsage usage;
  17. };
  18. class CM_EXPORT TextureView : public CoreObject
  19. {
  20. public:
  21. class HashFunction
  22. {
  23. public:
  24. size_t operator()(const TEXTURE_VIEW_DESC &key) const;
  25. };
  26. class EqualFunction
  27. {
  28. public:
  29. bool operator()(const TEXTURE_VIEW_DESC &a, const TEXTURE_VIEW_DESC &b) const;
  30. };
  31. virtual ~TextureView();
  32. virtual void initialize(TexturePtr texture, TEXTURE_VIEW_DESC& _desc);
  33. UINT32 getMostDetailedMip() const { return mDesc.mostDetailMip; }
  34. UINT32 getNumMips() const { return mDesc.numMips; }
  35. UINT32 getFirstArraySlice() const { return mDesc.firstArraySlice; }
  36. UINT32 getNumArraySlices() const { return mDesc.numArraySlices; }
  37. GpuViewUsage getUsage() const { return mDesc.usage; }
  38. const TEXTURE_VIEW_DESC& getDesc() const { return mDesc; }
  39. TexturePtr getTexture() const { return mOwnerTexture; }
  40. protected:
  41. friend class Texture;
  42. TEXTURE_VIEW_DESC mDesc;
  43. TexturePtr mOwnerTexture;
  44. TextureView();
  45. };
  46. }