ge_vulkan_dynamic_spm_buffer.hpp 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #ifndef HEADER_GE_VULKAN_DYNAMIC_SPM_BUFFER_HPP
  2. #define HEADER_GE_VULKAN_DYNAMIC_SPM_BUFFER_HPP
  3. #include "ge_spm_buffer.hpp"
  4. namespace GE
  5. {
  6. class GEVulkanDriver;
  7. class GEVulkanDynamicBuffer;
  8. class GEVulkanDynamicSPMBuffer : public GESPMBuffer
  9. {
  10. private:
  11. GEVulkanDynamicBuffer* m_vertex_buffer;
  12. GEVulkanDynamicBuffer* m_index_buffer;
  13. GEVulkanDriver* m_vk;
  14. uint32_t* m_vertex_update_offsets;
  15. uint32_t* m_index_update_offsets;
  16. public:
  17. // ------------------------------------------------------------------------
  18. GEVulkanDynamicSPMBuffer();
  19. // ------------------------------------------------------------------------
  20. ~GEVulkanDynamicSPMBuffer();
  21. // ------------------------------------------------------------------------
  22. virtual irr::scene::E_HARDWARE_MAPPING getHardwareMappingHint_Vertex() const
  23. { return irr::scene::EHM_STREAM; }
  24. // ------------------------------------------------------------------------
  25. virtual irr::scene::E_HARDWARE_MAPPING getHardwareMappingHint_Index() const
  26. { return irr::scene::EHM_STREAM; }
  27. // ------------------------------------------------------------------------
  28. virtual void bindVertexIndexBuffer(VkCommandBuffer cmd) {}
  29. // ------------------------------------------------------------------------
  30. virtual void createVertexIndexBuffer() {}
  31. // ------------------------------------------------------------------------
  32. virtual void destroyVertexIndexBuffer() {}
  33. // ------------------------------------------------------------------------
  34. void updateVertexIndexBuffer(int buffer_index);
  35. // ------------------------------------------------------------------------
  36. void drawDynamicVertexIndexBuffer(VkCommandBuffer cmd, int buffer_index);
  37. // ------------------------------------------------------------------------
  38. void setDirtyOffset(irr::u32 offset,
  39. irr::scene::E_BUFFER_TYPE buffer = irr::scene::EBT_VERTEX_AND_INDEX);
  40. };
  41. } // end namespace GE
  42. #endif