33 void bind_as(gl::GLenum target)
const;
36 static void unbind(gl::GLenum target);
37 void get_buffer_data(std::vector<char> &data)
const;
43 std::swap(vbo_, o.vbo_);
44 std::swap(size_, o.size_);
45 std::swap(target_, o.target_);
49 void buffer_data(
const std::vector<T> &data, gl::GLenum usage) {
50 buffer_data(data.data(), data.size() *
sizeof(T), usage);
52 template <
typename T,
size_t N>
53 void buffer_data(
const std::array<T, N> &data, gl::GLenum usage) {
54 buffer_data(data.data(), data.size() *
sizeof(T), usage);
57 void buffer_data(
const std::vector<T> &data, gl::GLenum usage,
59 buffer_data(
nullptr, size *
sizeof(T), usage);
60 buffer_sub_data(data.data(), 0, data.size() *
sizeof(T));
62 template <
typename T,
size_t N>
63 void buffer_data(
const std::array<T, N> &data, gl::GLenum usage,
65 buffer_data(
nullptr, size *
sizeof(T), usage);
66 buffer_sub_data(data.data(), 0, data.size() *
sizeof(T));
71 buffer_sub_data(data.data(), offset, data.size() *
sizeof(T));
void buffer_data(const void *data, gl::GLuint size, gl::GLenum usage)
void buffer_sub_data(const std::vector< T > &data, gl::GLuint offset)
void buffer_data(const std::vector< T > &data, gl::GLenum usage, size_t size)
void get_buffer_data(std::vector< char > &data, gl::GLenum target) const
void buffer_data(const std::array< T, N > &data, gl::GLenum usage)
void buffer_data(const std::vector< T > &data, gl::GLenum usage)
Buffer(gl::GLenum target)
Buffer(const Buffer &)=delete
Buffer & operator=(Buffer &&o)
Buffer & operator=(const Buffer &)=delete
void buffer_data(const std::array< T, N > &data, gl::GLenum usage, size_t size)