14 m_target = GL_ARRAY_BUFFER;
17 m_target = GL_ELEMENT_ARRAY_BUFFER;
20 m_target = GL_UNIFORM_BUFFER;
23 m_target = GL_ARRAY_BUFFER;
33 if (
Size == 0)
return false;
35 glGenBuffers(1, &m_buffer);
36 glBindBuffer(m_target, m_buffer);
40 glBufferData(m_target,
Size, data, usage);
41 glBindBuffer(m_target, 0);
50 glBindBufferBase(GL_UNIFORM_BUFFER,
Slot, m_buffer);
55 if (!data || size == 0 || m_buffer == 0)
return;
62 glBindBuffer(m_target, m_buffer);
63 glBufferSubData(m_target, 0, size, data);
64 glBindBuffer(m_target, 0);
69 glDeleteBuffers(1, &m_buffer);
78 glBindBuffer(m_target, m_buffer);
79 Data = glMapBuffer(m_target, GL_WRITE_ONLY);
84 glBindBuffer(m_target, 0);
91 glBindBuffer(m_target, m_buffer);
92 glUnmapBuffer(m_target);
93 glBindBuffer(m_target, 0);
void StoreCPUShadowCopy(const void *data, size_t size)
Copies up to 128 bytes into the inline shadow-copy storage, clamping oversized input.
void Update() override
Re-uploads the last-mapped/updated data via glBufferSubData.
bool Map() override
Maps the buffer for direct CPU writes via glMapBuffer.
void * GetData() override
OpenGLBuffer(uint32_t size, BufferType type)
bool Initialize(void *data) override
Creates the GL buffer object and uploads the initial payload, if any.
Backend-facing rendering layer shared by the four graphics backends.
BufferType
GPU buffer usage kind, drives backend binding flags and layout.
Root namespace for everything the engine exposes.