CmTextureView.h 1.2 KB

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