1
0
Fork 0
mirror of https://github.com/AquariaOSE/Aquaria.git synced 2024-12-03 00:15:46 +00:00

tiny fixes to VBO

This commit is contained in:
fgenesis 2023-08-25 00:35:27 +02:00
parent 368271c40e
commit 17452f175e

View file

@ -77,6 +77,7 @@ void* DynamicGPUBuffer::_ensureBytes(size_t bytes)
void* DynamicGPUBuffer::beginWrite(BufDataType type, size_t newsize, unsigned access) void* DynamicGPUBuffer::beginWrite(BufDataType type, size_t newsize, unsigned access)
{ {
assert(!_d_map);
_size = newsize; _size = newsize;
_datatype = type; _datatype = type;
@ -115,8 +116,10 @@ bool DynamicGPUBuffer::_commitWrite(size_t used)
if(_d_map) if(_d_map)
{ {
assert(used <= _d_cap); assert(used <= _d_cap);
_d_map = NULL; bool ok = glUnmapBufferARB(_binding); // can fail
return glUnmapBufferARB(_binding); // can fail if(ok)
_d_map = NULL;
return ok;
} }
// otherwise, the prev. call to glMapBufferARB failed (or GPUACCESS_HOSTCOPY was set). // otherwise, the prev. call to glMapBufferARB failed (or GPUACCESS_HOSTCOPY was set).
// -> didn't map, but wrote to host memory. upload it. // -> didn't map, but wrote to host memory. upload it.
@ -255,18 +258,18 @@ void DynamicGPUBuffer::dropBuffer()
_size = 0; _size = 0;
} }
static unsigned getBoundBuffer(unsigned target) /*static unsigned getBoundBuffer(unsigned target)
{ {
int id = 0; int id = 0;
glGetIntegerv(target, &id); glGetIntegerv(target, &id);
return id; return id;
} }*/
void DynamicGPUBuffer::drawElements(unsigned glmode, size_t n, size_t first) const void DynamicGPUBuffer::drawElements(unsigned glmode, size_t n, size_t first) const
{ {
assert(_binding == GL_ELEMENT_ARRAY_BUFFER_ARB); assert(_binding == GL_ELEMENT_ARRAY_BUFFER_ARB);
assert(s_gltype[_datatype & 0xf] == GL_SHORT); assert(s_gltype[_datatype & 0xf] == GL_SHORT);
assert(getBoundBuffer(GL_ARRAY_BUFFER_BINDING)); // FIXME: this assert is wrong if indices are on the host //assert(getBoundBuffer(GL_ARRAY_BUFFER_BINDING)); // FIXME: this assert is wrong if indices are on the host
unsigned id = _bufid; unsigned id = _bufid;