+ if (bufUsage != m_buffer_usage)
+ {
+ m_buffer_usage = bufUsage;
+ m_buffer_shape_dirty = true;
+ }
+}
+
+void GraphicsBuffer::Invalidate()
+{
+ m_invalidated = true;
+ // Apparently not supported.
+ //glInvalidateBufferData(m_buffer_handle);
+}
+
+void GraphicsBuffer::RecreateBuffer()
+{
+ // If the buffer is not dirty, don't recreate it.
+ if (!m_buffer_shape_dirty) return;
+ // If the buffer is mapped, don't recreate it.
+ if (m_map_pointer) return;
+ // If the buffer has data in it we need, don't recreate it.
+ if (!m_invalidated) return;
+ if (m_buffer_handle)
+ {
+ glDeleteBuffers(1, &m_buffer_handle);
+ }
+ glGenBuffers(1, &m_buffer_handle);
+ m_buffer_shape_dirty = false;
+ if (m_buffer_size)
+ Upload(m_buffer_size, nullptr);