Made buildable now
This commit is contained in:
parent
81bffb7511
commit
8a05052516
@ -138,7 +138,7 @@ class Buffer : public OpenGLObject {
|
|||||||
_usage = usage_;
|
_usage = usage_;
|
||||||
}
|
}
|
||||||
virtual void data(const ByteVector& data_, GLenum usage_=GL_STATIC_DRAW) {
|
virtual void data(const ByteVector& data_, GLenum usage_=GL_STATIC_DRAW) {
|
||||||
data(Target, data_.size(), data_.data(), usage_);
|
data(data_.data(), data_.size(), usage_);
|
||||||
|
|
||||||
}
|
}
|
||||||
virtual void subdata(void* data_, GLsizeiptr size_, GLintptr offset_=0) {
|
virtual void subdata(void* data_, GLsizeiptr size_, GLintptr offset_=0) {
|
||||||
|
|||||||
@ -51,16 +51,19 @@ class VAOError : public Error<VAOError> {
|
|||||||
|
|
||||||
template <bool Immutable=false>
|
template <bool Immutable=false>
|
||||||
class VertexBuffer : public ArrayBuffer<false>{
|
class VertexBuffer : public ArrayBuffer<false>{
|
||||||
using Base = ArrayBuffer<Immutable>;
|
using Base = ArrayBuffer<false>;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
template<typename... Args>
|
template<typename... Args>
|
||||||
VertexBuffer(const VertexAttributeList& vas, Args... args)
|
VertexBuffer(const VertexAttributeList& vas={}, Args... args)
|
||||||
: attributes(vas) {
|
: attributes(vas) {
|
||||||
if (sizeof...(Args)) {
|
if (sizeof...(Args)) {
|
||||||
data(args...);
|
data(args...);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
VertexBuffer(VertexBuffer&& rhs)
|
||||||
|
: attributes(rhs.attributes), Base(std::move(rhs)){}
|
||||||
|
|
||||||
|
|
||||||
using Base::Target;
|
using Base::Target;
|
||||||
const VertexAttributeList attributes;
|
const VertexAttributeList attributes;
|
||||||
@ -104,7 +107,7 @@ class VAO : public OpenGLObject {
|
|||||||
if(_id) {
|
if(_id) {
|
||||||
glBindVertexArray(_id);
|
glBindVertexArray(_id);
|
||||||
} else {
|
} else {
|
||||||
THROW(Codes::INVALID_VAO);
|
THROW(VAOError(Codes::INVALID_VAO));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
virtual void unbind() const override { glBindVertexArray(0); }
|
virtual void unbind() const override { glBindVertexArray(0); }
|
||||||
|
|||||||
@ -141,7 +141,7 @@ std::vector<std::shared_ptr<VertexBuffer<false>>> VertexGroup::buffers() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
size_t VertexGroup::buffers(std::vector<VertexBuffer<false>>&& bufs_) {
|
size_t VertexGroup::buffers(std::vector<VertexBuffer<false>>&& bufs_) {
|
||||||
_vertex_data = {};
|
_vertex_data.clear();
|
||||||
for (auto& buf : bufs_) {
|
for (auto& buf : bufs_) {
|
||||||
_vertex_data.emplace_back(
|
_vertex_data.emplace_back(
|
||||||
std::make_shared<VertexBuffer<false>>(std::move(buf))
|
std::make_shared<VertexBuffer<false>>(std::move(buf))
|
||||||
@ -166,13 +166,16 @@ VertexBuffer<false>&& VertexGroup::dropBuffer(size_t idx) {
|
|||||||
THROW(BufferError(BufferError::Codes::INVALID_BUFFER));
|
THROW(BufferError(BufferError::Codes::INVALID_BUFFER));
|
||||||
}
|
}
|
||||||
std::vector<VertexBuffer<false>> tmp;
|
std::vector<VertexBuffer<false>> tmp;
|
||||||
|
std::shared_ptr<VertexBuffer<false>> ret_ptr;
|
||||||
|
size_t i = 0;
|
||||||
for (auto buf : _vertex_data) {
|
for (auto buf : _vertex_data) {
|
||||||
tmp.emplace_back(std::move(*buf));
|
if (i == idx) {
|
||||||
|
ret_ptr = std::make_shared<VertexBuffer<false>>(std::move(tmp[idx]));
|
||||||
|
} else {
|
||||||
|
tmp.emplace_back(std::move(*buf));
|
||||||
|
}
|
||||||
|
i++;
|
||||||
}
|
}
|
||||||
_vertex_data.clear();
|
|
||||||
std::shared_ptr<VertexBuffer<false>> ret_ptr =
|
|
||||||
std::make_shared<VertexBuffer<false>>(std::move(tmp[idx]));
|
|
||||||
tmp.erase(tmp.begin()+idx);
|
|
||||||
buffers(std::move(tmp));
|
buffers(std::move(tmp));
|
||||||
return std::move(*ret_ptr);
|
return std::move(*ret_ptr);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user