CmTextureView.h 1.1 KB

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