usage = GL_STREAM_COPY;
break;
default:
- SDL_assert(false && "Unknown buffer usage type.");
+ SDL_assert(false && "Unknown buffer usage type."); //WTF?
usage = GL_DYNAMIC_DRAW;
}
return usage;
return GL_PIXEL_UNPACK_BUFFER;
case GraphicsBuffer::BufferTypeUniform:
return GL_UNIFORM_BUFFER;
+ case GraphicsBuffer::BufferTypeTexture:
+ return GL_TEXTURE_BUFFER;
case GraphicsBuffer::BufferTypeDrawIndirect:
return GL_DRAW_INDIRECT_BUFFER;
default:
GraphicsBuffer::GraphicsBuffer()
{
m_invalidated = true;
- m_map_pointer = nullptr;
+ m_map_pointer = NULL;
m_buffer_size = 0;
m_buffer_shape_dirty = true;
m_buffer_handle = 0;
if (!m_buffer_shape_dirty)
{
// Orphan the block of memory we're pointing to.
- Upload(m_buffer_size, nullptr);
+ Upload(m_buffer_size, NULL);
}
// Apparently not supported.
//glInvalidateBufferData(m_buffer_handle);
void GraphicsBuffer::UnMap()
{
GLenum target = BufferTypeToGLType(m_buffer_type);
+
+ // If we're not mapped, unmapping is a no-op.
+ if (!m_map_pointer)
+ return;
if (m_faking_map)
{
Upload(m_buffer_size, m_map_pointer);
free(m_map_pointer);
- m_map_pointer = nullptr;
+ m_map_pointer = NULL;
m_invalidated = false;
m_faking_map = false;
return;
Bind();
glUnmapBuffer(target);
- m_map_pointer = nullptr;
+ m_map_pointer = NULL;
m_invalidated = false;
}
Bind();
glBufferData(target, length, data, usage);
}
- if (data != nullptr)
+ if (data != NULL)
m_invalidated = false;
}
UnMap();
GLuint old_buffer = m_buffer_handle;
glGenBuffers(1, &m_buffer_handle);
- Upload(length, nullptr);
+ Upload(length, NULL);
glBindBuffer(GL_COPY_READ_BUFFER, old_buffer);
glBindBuffer(GL_COPY_WRITE_BUFFER, m_buffer_handle);
glCopyBufferSubData(GL_COPY_READ_BUFFER, GL_COPY_WRITE_BUFFER, 0, 0, m_buffer_size);