DX12Buffer.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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,
  22. ID3D12Device* device,
  23. ID3D12GraphicsCommandList* list,
  24. int bindFlags);
  25. //! Destruktor
  26. DLLEXPORT virtual ~DX12Buffer();
  27. //! Kopiert die Daten in den Buffer, fals sie sich verändert haben
  28. DLLEXPORT void copieren(int byteCount = -1) override;
  29. //! Gibt den Buffer zurück
  30. DLLEXPORT ID3D12Resource* zBuffer() const;
  31. };
  32. class DX12IndexBuffer : public DX12Buffer
  33. {
  34. private:
  35. bool ibs;
  36. DX12DirectCommandQueue* direct;
  37. DX12CopyCommandQueue* copy;
  38. public:
  39. DX12IndexBuffer(int eSize,
  40. ID3D12Device* device,
  41. DX12CopyCommandQueue* copy,
  42. DX12DirectCommandQueue* direct);
  43. ~DX12IndexBuffer();
  44. //! Kopiert die Daten in den Buffer, fals sie sich verändert haben
  45. DLLEXPORT void copieren(int byteCount = -1) override;
  46. };
  47. class DX12VertexBuffer : public DX12Buffer
  48. {
  49. private:
  50. bool vbs;
  51. DX12DirectCommandQueue* direct;
  52. DX12CopyCommandQueue* copy;
  53. public:
  54. DX12VertexBuffer(int eSize,
  55. ID3D12Device* device,
  56. DX12CopyCommandQueue* copy,
  57. DX12DirectCommandQueue* direct);
  58. ~DX12VertexBuffer();
  59. //! Kopiert die Daten in den Buffer, fals sie sich verändert haben
  60. DLLEXPORT void copieren(int byteCount = -1) override;
  61. };
  62. } // namespace Framework