Cause a Lua error instead of silently failing if a vertex buffer memory allocation fails.

This commit is contained in:
Alex Szpakowski
2016-07-17 17:44:38 -03:00
parent 877ebbf9c9
commit 8ea1edbc2a
+6 -5
View File
@@ -58,12 +58,10 @@ GLBuffer::GLBuffer(size_t size, const void *data, GLenum target, GLenum usage, u
if (data != nullptr)
memcpy(memory_map, data, size);
bool ok = load(data != nullptr);
if (!ok)
if (!load(data != nullptr))
{
delete[] memory_map;
throw love::Exception("Could not load VBO.");
throw love::Exception("Could not load vertex buffer (out of VRAM?)");
}
}
@@ -221,13 +219,16 @@ bool GLBuffer::load(bool restore)
GLBuffer::Bind bind(*this);
while (glGetError() != GL_NO_ERROR)
/* Clear the error buffer. */;
// Copy the old buffer only if 'restore' was requested.
const GLvoid *src = restore ? memory_map : nullptr;
// Note that if 'src' is '0', no data will be copied.
glBufferData(getTarget(), (GLsizeiptr) getSize(), src, getUsage());
return true;
return (glGetError() == GL_NO_ERROR);
}
void GLBuffer::unload()