]> git.tdb.fi Git - libs/gl.git/blobdiff - source/backends/opengl/buffer_backend.cpp
Add support for padding in vertex formats
[libs/gl.git] / source / backends / opengl / buffer_backend.cpp
index e1bced73718272f91fd5cfb63642abd51f099c37..e0f5525a9a2b211f8b2f5367ee78379aa8415146 100644 (file)
@@ -24,16 +24,23 @@ OpenGLBuffer::OpenGLBuffer()
                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)
        {
@@ -55,7 +62,7 @@ void OpenGLBuffer::allocate()
        }
 }
 
-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);
@@ -70,7 +77,7 @@ void *OpenGLBuffer::map()
 {
        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);
@@ -84,7 +91,6 @@ void *OpenGLBuffer::map()
 
 bool OpenGLBuffer::unmap()
 {
-       // TODO check if it's mapped
        if(ARB_direct_state_access)
                return glUnmapNamedBuffer(id);
        else if(OES_mapbuffer)