X-Git-Url: https://git.ucc.asn.au/?p=ipdf%2Fcode.git;a=blobdiff_plain;f=src%2Fgraphicsbuffer.cpp;h=844dfe86e9835a6b6238106893bae9b38b90223f;hp=91c3478669ce641dca4f7e7fe2dff4397f4ab64e;hb=6b7e92069596a3f19fbe068b14a9c5ef59c22061;hpb=4f60a4a972fa76800580f8731aba54a8fe94e1fb diff --git a/src/graphicsbuffer.cpp b/src/graphicsbuffer.cpp index 91c3478..844dfe8 100644 --- a/src/graphicsbuffer.cpp +++ b/src/graphicsbuffer.cpp @@ -224,7 +224,7 @@ void GraphicsBuffer::Upload(size_t length, const void* data) if (!RecreateBuffer(data)) { Bind(); - glBufferData(target, length, data, usage); + glBufferData(target, length+1, data, usage); } if (data != NULL) m_invalidated = false; @@ -243,13 +243,14 @@ void GraphicsBuffer::UploadRange(size_t length, intptr_t offset, const void* dat void GraphicsBuffer::Resize(size_t length) { - glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 0, -1, "Resizing buffer."); - if (m_invalidated) + if (m_invalidated && m_buffer_size >= length) { m_buffer_size = length; } else { + glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 0, -1, "Resizing buffer."); + glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DEBUG_SEVERITY_HIGH, 0, NULL, GL_TRUE); // Create a new buffer and copy the old data into it. UnMap(); GLuint old_buffer = m_buffer_handle; @@ -260,8 +261,8 @@ void GraphicsBuffer::Resize(size_t length) glCopyBufferSubData(GL_COPY_READ_BUFFER, GL_COPY_WRITE_BUFFER, 0, 0, m_buffer_size); glDeleteBuffers(1, &old_buffer); m_buffer_size = length; + glPopDebugGroup(); } - glPopDebugGroup(); } void GraphicsBuffer::Bind() const