diff --git a/libs/gfx/include/psemek/gfx/buffer.hpp b/libs/gfx/include/psemek/gfx/buffer.hpp index 5da857e0..e13d5fc5 100644 --- a/libs/gfx/include/psemek/gfx/buffer.hpp +++ b/libs/gfx/include/psemek/gfx/buffer.hpp @@ -106,6 +106,42 @@ namespace psemek::gfx load(data.data(), data.size(), usage); } + void load_subdata(std::size_t offset, void const * data, std::size_t size) + { + bind(); + gl::BufferSubData(Target, offset, size, data); + } + + template + void load_subdata(std::size_t offset, T const * data, std::size_t size) + { + load_subdata(offset * sizeof(T), static_cast(data), size * sizeof(T)); + } + + template + void load_subdata(std::size_t offset, std::vector const & data) + { + load_subdata(offset, data.data(), data.size()); + } + + template + void load_subdata(std::size_t offset, std::array const & data) + { + load_subdata(offset, data.data(), data.size()); + } + + template + void load_subdata(std::size_t offset, T const (&data)[N]) + { + load_subdata(offset, data, N); + } + + template + void load_subdata(std::size_t offset, util::span const & data) + { + load_subdata(offset, data.data(), data.size()); + } + template std::shared_ptr map() {