DX12Buffer.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #pragma once
  2. #include "DXBuffer.h"
  3. struct ID3D12Resource;
  4. struct ID3D12Device;
  5. struct D3D12_RESOURCE_DESC;
  6. struct ID3D12GraphicsCommandList;
  7. namespace Framework
  8. {
  9. //! Ein Buffer mit Daten im Grafikspeicher
  10. class DX12Buffer : public DXBuffer
  11. {
  12. protected:
  13. D3D12_RESOURCE_DESC* description;
  14. ID3D12Resource* buffer;
  15. ID3D12Resource* intermediate;
  16. ID3D12Device* device;
  17. ID3D12GraphicsCommandList* list;
  18. public:
  19. //! Konstruktor
  20. //! eSize: Die Länge eines Elementes in Bytes
  21. DLLEXPORT DX12Buffer( int eSize, ID3D12Device* device, ID3D12GraphicsCommandList* list, int bindFlags );
  22. //! Destruktor
  23. DLLEXPORT virtual ~DX12Buffer();
  24. //! Kopiert die Daten in den Buffer, fals sie sich verändert haben
  25. DLLEXPORT void copieren( int byteCount = -1 ) override;
  26. //! Gibt den Buffer zurück
  27. DLLEXPORT ID3D12Resource* zBuffer() const;
  28. };
  29. class DX12IndexBuffer : public DX12Buffer
  30. {
  31. private:
  32. bool ibs;
  33. DX12DirectCommandQueue* direct;
  34. DX12CopyCommandQueue* copy;
  35. public:
  36. DX12IndexBuffer( int eSize, ID3D12Device* device, DX12CopyCommandQueue* copy, DX12DirectCommandQueue* direct );
  37. ~DX12IndexBuffer();
  38. //! Kopiert die Daten in den Buffer, fals sie sich verändert haben
  39. DLLEXPORT void copieren( int byteCount = -1 ) override;
  40. };
  41. class DX12VertexBuffer : public DX12Buffer
  42. {
  43. private:
  44. bool vbs;
  45. DX12DirectCommandQueue* direct;
  46. DX12CopyCommandQueue* copy;
  47. public:
  48. DX12VertexBuffer( int eSize, ID3D12Device* device, DX12CopyCommandQueue* copy, DX12DirectCommandQueue* direct );
  49. ~DX12VertexBuffer();
  50. //! Kopiert die Daten in den Buffer, fals sie sich verändert haben
  51. DLLEXPORT void copieren( int byteCount = -1 ) override;
  52. };
  53. }