graphics: move buffer:clear error checking to high level code

This commit is contained in:
Sasha Szpakowski
2024-01-02 11:13:31 -04:00
parent af840bb2cf
commit 77c5ea1d6b
8 changed files with 27 additions and 34 deletions
+1 -10
View File
@@ -299,17 +299,8 @@ bool Buffer::fill(size_t offset, size_t size, const void *data)
return true;
}
void Buffer::clear(size_t offset, size_t size)
void Buffer::clearInternal(size_t offset, size_t size)
{
if (isImmutable())
throw love::Exception("Cannot clear an immutable Buffer.");
else if (isMapped())
throw love::Exception("Cannot clear a mapped Buffer.");
else if (offset + size > getSize())
throw love::Exception("The given offset and size parameters to clear() are not within the Buffer's size.");
else if (offset % 4 != 0 || size % 4 != 0)
throw love::Exception("clear() must be used with offset and size parameters that are multiples of 4 bytes.");
if (GLAD_VERSION_4_3)
{
gl.bindBuffer(mapUsage, buffer);
+2 -1
View File
@@ -53,7 +53,6 @@ public:
void *map(MapType map, size_t offset, size_t size) override;
void unmap(size_t usedoffset, size_t usedsize) override;
bool fill(size_t offset, size_t size, const void *data) override;
void clear(size_t offset, size_t size) override;
void copyTo(love::graphics::Buffer *dest, size_t sourceoffset, size_t destoffset, size_t size) override;
ptrdiff_t getHandle() const override { return buffer; };
@@ -66,6 +65,8 @@ private:
bool load(const void *initialdata);
bool supportsOrphan() const;
void clearInternal(size_t offset, size_t size) override;
BufferUsage mapUsage = BUFFERUSAGE_VERTEX;
GLenum target = 0;