galaxy 1.0.0
Real-Time C++23 Game Programming Framework. Built on data-driven design principles and agile software engineering.
Loading...
Searching...
No Matches
InstanceBuffer.hpp
Go to the documentation of this file.
1
7
8#ifndef GALAXY_GRAPHICS_GL_INSTANCEBUFFER_HPP_
9#define GALAXY_GRAPHICS_GL_INSTANCEBUFFER_HPP_
10
11#include <span>
12
13#include <glm/mat4x4.hpp>
14
15namespace galaxy
16{
17 namespace graphics
18 {
22 class InstanceBuffer final
23 {
24 public:
29
34
39
44
50 void buffer(std::span<glm::mat4> transforms);
51
58 void sub_buffer(const unsigned int index, std::span<glm::mat4> transforms);
59
63 void clear();
64
70 [[nodiscard]]
71 int amount() const;
72
78 [[nodiscard]]
79 unsigned int id() const;
80
81 private:
90
91 private:
95 unsigned int m_id;
96
101 };
102 } // namespace graphics
103} // namespace galaxy
104
105#endif
Abstraction for OpenGL vertex buffer objects.
InstanceBuffer & operator=(const InstanceBuffer &)=delete
Copy assignment operator.
InstanceBuffer & operator=(InstanceBuffer &&)
Move assignment operator.
int m_amount
Number of instances.
unsigned int id() const
Get OpenGL handle.
void buffer(std::span< glm::mat4 > transforms)
Create instance buffer.
InstanceBuffer(const InstanceBuffer &)=delete
Copy constructor.
void clear()
Clear buffer data.
void sub_buffer(const unsigned int index, std::span< glm::mat4 > transforms)
Sub-buffer instances.
int amount() const
Get the amount of instances.
unsigned int m_id
ID returned by OpenGL when generating buffer.
Animated.cpp galaxy.
Definition Animated.cpp:16