Meshes expose GraphicsBuffers, part 2

This commit is contained in:
Alex Szpakowski
2020-02-01 15:39:59 -04:00
parent afcb467fa7
commit 2572f0c7a1
25 changed files with 491 additions and 498 deletions
+17 -12
View File
@@ -32,6 +32,9 @@ namespace love
{
namespace graphics
{
class Graphics;
namespace opengl
{
@@ -39,9 +42,14 @@ class Buffer final : public love::graphics::Buffer, public Volatile
{
public:
Buffer(size_t size, const void *data, BufferTypeFlags typeflags, BufferUsage usage, uint32 mapflags);
Buffer(const Settings &settings, const void *data, size_t size);
Buffer(love::graphics::Graphics *gfx, const Settings &settings, const std::vector<DataDeclaration> &format, const void *data, size_t size, size_t arraylength);
virtual ~Buffer();
// Implements Volatile.
bool loadVolatile() override;
void unloadVolatile() override;
void *map() override;
void unmap() override;
void setMappedRangeModified(size_t offset, size_t size) override;
@@ -50,29 +58,26 @@ public:
void copyTo(size_t offset, size_t size, love::graphics::Buffer *other, size_t otheroffset) override;
// Implements Volatile.
bool loadVolatile() override;
void unloadVolatile() override;
private:
void initialize(const void *data);
bool load(bool restore);
void unload();
void unmapStatic(size_t offset, size_t size);
void unmapStream();
BufferType mapType;
GLenum target;
BufferType mapType = BUFFERTYPE_VERTEX;
GLenum target = 0;
// The VBO identifier. Assigned by OpenGL.
GLuint vbo;
GLuint vbo = 0;
// A pointer to mapped memory.
char *memoryMap;
char *memoryMap = nullptr;
size_t modifiedOffset;
size_t modifiedSize;
size_t modifiedOffset = 0;
size_t modifiedSize = 0;
}; // Buffer