DX12Buffer.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. #pragma once
  2. #include <d3d12.h>
  3. #include "DXBuffer.h"
  4. namespace Framework
  5. {
  6. class DX12CommandQueue;
  7. //! A buffer with data in graphics memory
  8. class DX12Buffer : public DXBuffer
  9. {
  10. protected:
  11. D3D12_RESOURCE_DESC* description;
  12. ID3D12Resource* buffer;
  13. ID3D12Device5* zDevice;
  14. DX12CommandQueue* queue;
  15. D3D12_RESOURCE_STATES currentState;
  16. public:
  17. //! Constructor
  18. //! eSize: The length of an element in bytes
  19. DLLEXPORT DX12Buffer(int eSize,
  20. ID3D12Device5* zDevice,
  21. DX12CommandQueue* queue,
  22. int bindFlags);
  23. //! Destructor
  24. DLLEXPORT virtual ~DX12Buffer();
  25. //! Copies the data into the buffer if it has changed
  26. DLLEXPORT virtual void copyToGPU(__int64 byteCount = -1) override;
  27. DLLEXPORT void createBufferWithoutData(D3D12_RESOURCE_STATES states,
  28. D3D12_HEAP_TYPE heapType = D3D12_HEAP_TYPE_DEFAULT);
  29. DLLEXPORT void transformState(D3D12_RESOURCE_STATES newState);
  30. //! Returns the buffer
  31. DLLEXPORT ID3D12Resource* zBuffer() const;
  32. };
  33. } // namespace Framework