RenderInstancesMTL.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. // Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
  2. // SPDX-FileCopyrightText: 2025 Jorrit Rouwe
  3. // SPDX-License-Identifier: MIT
  4. #pragma once
  5. #include <Renderer/MTL/RendererMTL.h>
  6. #include <Renderer/RenderInstances.h>
  7. class RenderPrimitive;
  8. /// Metal implementation of a render instances object
  9. class RenderInstancesMTL : public RenderInstances
  10. {
  11. public:
  12. /// Constructor
  13. RenderInstancesMTL(RendererMTL *inRenderer) : mRenderer(inRenderer) { }
  14. virtual ~RenderInstancesMTL() override { Clear(); }
  15. /// Erase all instance data
  16. virtual void Clear() override;
  17. /// Instance buffer management functions
  18. virtual void CreateBuffer(int inNumInstances, int inInstanceSize) override;
  19. virtual void * Lock() override;
  20. virtual void Unlock() override;
  21. /// Draw the instances when context has been set by Renderer::BindShader
  22. virtual void Draw(RenderPrimitive *inPrimitive, int inStartInstance, int inNumInstances) const override;
  23. private:
  24. RendererMTL * mRenderer;
  25. id<MTLBuffer> mBuffer;
  26. NSUInteger mBufferSize;
  27. NSUInteger mInstanceSize;
  28. };