#pragma once #include "DXBuffer.h" struct ID3D12Resource; struct ID3D12Device; struct D3D12_RESOURCE_DESC; struct ID3D12GraphicsCommandList; namespace Framework { //! Ein Buffer mit Daten im Grafikspeicher class DX12Buffer : public DXBuffer { protected: D3D12_RESOURCE_DESC* description; ID3D12Resource* buffer; ID3D12Resource* intermediate; ID3D12Device* device; ID3D12GraphicsCommandList* list; public: //! Konstruktor //! eSize: Die Länge eines Elementes in Bytes DLLEXPORT DX12Buffer(int eSize, ID3D12Device* device, ID3D12GraphicsCommandList* list, int bindFlags); //! Destruktor DLLEXPORT virtual ~DX12Buffer(); //! Kopiert die Daten in den Buffer, fals sie sich verändert haben DLLEXPORT void copieren(int byteCount = -1) override; //! Gibt den Buffer zurück DLLEXPORT ID3D12Resource* zBuffer() const; }; class DX12IndexBuffer : public DX12Buffer { private: bool ibs; DX12DirectCommandQueue* direct; DX12CopyCommandQueue* copy; public: DX12IndexBuffer(int eSize, ID3D12Device* device, DX12CopyCommandQueue* copy, DX12DirectCommandQueue* direct); ~DX12IndexBuffer(); //! Kopiert die Daten in den Buffer, fals sie sich verändert haben DLLEXPORT void copieren(int byteCount = -1) override; }; class DX12VertexBuffer : public DX12Buffer { private: bool vbs; DX12DirectCommandQueue* direct; DX12CopyCommandQueue* copy; public: DX12VertexBuffer(int eSize, ID3D12Device* device, DX12CopyCommandQueue* copy, DX12DirectCommandQueue* direct); ~DX12VertexBuffer(); //! Kopiert die Daten in den Buffer, fals sie sich verändert haben DLLEXPORT void copieren(int byteCount = -1) override; }; } // namespace Framework