RenderPrimitiveVK.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
  2. // SPDX-FileCopyrightText: 2024 Jorrit Rouwe
  3. // SPDX-License-Identifier: MIT
  4. #pragma once
  5. #include <Renderer/RenderPrimitive.h>
  6. #include <Renderer/VK/RendererVK.h>
  7. #include <Renderer/VK/BufferVK.h>
  8. /// Vulkan implementation of a render primitive
  9. class RenderPrimitiveVK : public RenderPrimitive
  10. {
  11. public:
  12. /// Constructor
  13. RenderPrimitiveVK(RendererVK *inRenderer) : mRenderer(inRenderer) { }
  14. virtual ~RenderPrimitiveVK() override { Clear(); }
  15. /// Vertex buffer management functions
  16. virtual void CreateVertexBuffer(int inNumVtx, int inVtxSize, const void *inData = nullptr) override;
  17. virtual void ReleaseVertexBuffer() override;
  18. virtual void * LockVertexBuffer() override;
  19. virtual void UnlockVertexBuffer() override;
  20. /// Index buffer management functions
  21. virtual void CreateIndexBuffer(int inNumIdx, const uint32 *inData = nullptr) override;
  22. virtual void ReleaseIndexBuffer() override;
  23. virtual uint32 * LockIndexBuffer() override;
  24. virtual void UnlockIndexBuffer() override;
  25. /// Draw the primitive
  26. virtual void Draw() const override;
  27. private:
  28. friend class RenderInstancesVK;
  29. RendererVK * mRenderer;
  30. BufferVK mVertexBuffer;
  31. bool mVertexBufferDeviceLocal = false;
  32. BufferVK mIndexBuffer;
  33. bool mIndexBufferDeviceLocal = false;
  34. };