52 lines
729 B
C++
52 lines
729 B
C++
#include <psemek/gfx/buffer.hpp>
|
|
|
|
namespace psemek::gfx
|
|
{
|
|
|
|
buffer::buffer()
|
|
{
|
|
gl::GenBuffers(1, &id_);
|
|
}
|
|
|
|
buffer::buffer(buffer && other)
|
|
: id_(other.id_)
|
|
{
|
|
other.id_ = 0;
|
|
}
|
|
|
|
buffer & buffer::operator = (buffer && other)
|
|
{
|
|
if (this == &other) return *this;
|
|
|
|
gl::DeleteBuffers(1, &id_);
|
|
id_ = other.id_;
|
|
other.id_ = 0;
|
|
return *this;
|
|
}
|
|
|
|
buffer::~buffer()
|
|
{
|
|
gl::DeleteBuffers(1, &id_);
|
|
}
|
|
|
|
buffer buffer::null()
|
|
{
|
|
return buffer(0);
|
|
}
|
|
|
|
void buffer::bind() const
|
|
{
|
|
gl::BindBuffer(gl::ARRAY_BUFFER, id_);
|
|
}
|
|
|
|
void buffer::load(void const * data, std::size_t size, GLenum usage)
|
|
{
|
|
bind();
|
|
gl::BufferData(gl::ARRAY_BUFFER, size, data, usage);
|
|
}
|
|
|
|
buffer::buffer(GLuint id)
|
|
: id_(id)
|
|
{}
|
|
|
|
}
|