glGenBuffers(1, &id);
}
+OpenGLBuffer::OpenGLBuffer(OpenGLBuffer &&other):
+ id(other.id)
+{
+ other.id = 0;
+}
+
OpenGLBuffer::~OpenGLBuffer()
{
if(this==scratch_binding)
unbind_scratch();
- glDeleteBuffers(1, &id);
+ if(id)
+ glDeleteBuffers(1, &id);
}
void OpenGLBuffer::allocate()
{
- unsigned size = static_cast<const Buffer *>(this)->size;
+ size_t size = static_cast<const Buffer *>(this)->size;
if(ARB_buffer_storage)
{
}
}
-void OpenGLBuffer::sub_data(unsigned off, unsigned sz, const void *d)
+void OpenGLBuffer::sub_data(size_t off, size_t sz, const void *d)
{
if(ARB_direct_state_access)
glNamedBufferSubData(id, off, sz, d);
{
static Require _req(ARB_map_buffer_range);
- unsigned size = static_cast<const Buffer *>(this)->size;
+ size_t size = static_cast<const Buffer *>(this)->size;
if(ARB_direct_state_access)
return glMapNamedBufferRange(id, 0, size, GL_MAP_READ_BIT|GL_MAP_WRITE_BIT);
bool OpenGLBuffer::unmap()
{
- // TODO check if it's mapped
if(ARB_direct_state_access)
return glUnmapNamedBuffer(id);
else if(OES_mapbuffer)