Add gfx::buffer::load_subdata

This commit is contained in:
Nikita Lisitsa 2022-12-16 15:48:17 +03:00
parent 1198653891
commit e959c0ec1d

View file

@ -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 <typename T>
void load_subdata(std::size_t offset, T const * data, std::size_t size)
{
load_subdata(offset * sizeof(T), static_cast<void const *>(data), size * sizeof(T));
}
template <typename T>
void load_subdata(std::size_t offset, std::vector<T> const & data)
{
load_subdata(offset, data.data(), data.size());
}
template <typename T, std::size_t N>
void load_subdata(std::size_t offset, std::array<T, N> const & data)
{
load_subdata(offset, data.data(), data.size());
}
template <typename T, std::size_t N>
void load_subdata(std::size_t offset, T const (&data)[N])
{
load_subdata(offset, data, N);
}
template <typename T>
void load_subdata(std::size_t offset, util::span<T> const & data)
{
load_subdata(offset, data.data(), data.size());
}
template <typename T>
std::shared_ptr<T[]> map()
{