From 6d5a01921c9d4bceab44bb99d9ad587018d666fc Mon Sep 17 00:00:00 2001 From: lisyarus Date: Sun, 26 Feb 2023 20:08:59 +0300 Subject: [PATCH] Remember memory size in gfx::buffer --- libs/gfx/include/psemek/gfx/buffer.hpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/libs/gfx/include/psemek/gfx/buffer.hpp b/libs/gfx/include/psemek/gfx/buffer.hpp index e13d5fc5..45ea4959 100644 --- a/libs/gfx/include/psemek/gfx/buffer.hpp +++ b/libs/gfx/include/psemek/gfx/buffer.hpp @@ -21,8 +21,10 @@ namespace psemek::gfx basic_buffer(basic_buffer && other) : id_{other.id_} + , size_{other.size_} { other.id_ = 0; + other.size_ = 0; } basic_buffer & operator = (basic_buffer && other) @@ -31,8 +33,10 @@ namespace psemek::gfx return *this; reset(); - id_ = std::move(other.id_); + id_ = other.id_; + size_ = other.size_; other.id_ = 0; + other.size_ = 0; return *this; } @@ -68,12 +72,14 @@ namespace psemek::gfx if (id_) gl::DeleteBuffers(1, &id_); id_ = 0; + size_ = 0; } void load(void const * data, std::size_t size, GLenum usage = gl::STREAM_DRAW) { bind(); gl::BufferData(Target, size, data, usage); + size_ = size; } template @@ -142,6 +148,11 @@ namespace psemek::gfx load_subdata(offset, data.data(), data.size()); } + std::size_t size() const + { + return size_; + } + template std::shared_ptr map() { @@ -159,6 +170,7 @@ namespace psemek::gfx private: GLuint id_ = 0; + std::size_t size_ = 0; std::weak_ptr mapped_; explicit basic_buffer(std::nullptr_t)