summaryrefslogtreecommitdiff
path: root/lib/glMappedBufferWriter.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/glMappedBufferWriter.h')
-rw-r--r--lib/glMappedBufferWriter.h78
1 files changed, 0 insertions, 78 deletions
diff --git a/lib/glMappedBufferWriter.h b/lib/glMappedBufferWriter.h
deleted file mode 100644
index 05540e4..0000000
--- a/lib/glMappedBufferWriter.h
+++ /dev/null
@@ -1,78 +0,0 @@
-#pragma once
-
-#include "special_members.h"
-#include <cstddef>
-#include <glad/gl.h>
-#include <utility>
-
-template<typename T> class glMappedBufferWriter {
-public:
- using difference_type = std::ptrdiff_t;
-
- glMappedBufferWriter(GLenum target, GLuint buffer, size_t count) :
- target {target}, data {[&]() {
- glBindBuffer(target, buffer);
- glBufferData(target, static_cast<GLsizeiptr>(sizeof(T) * count), nullptr, GL_DYNAMIC_DRAW);
- return static_cast<T *>(glMapBuffer(target, GL_WRITE_ONLY));
- }()}
- {
- }
-
- ~glMappedBufferWriter()
- {
- if (target) {
- glUnmapBuffer(target);
- }
- }
-
- glMappedBufferWriter(glMappedBufferWriter && other) noexcept :
- target {std::exchange(other.target, 0)}, data {std::exchange(other.data, nullptr)}
- {
- }
-
- glMappedBufferWriter &
- operator=(glMappedBufferWriter && other) noexcept
- {
- if (target) {
- glUnmapBuffer(target);
- }
- target = std::exchange(other.target, 0);
- data = std::exchange(other.data, nullptr);
- return *this;
- }
-
- NO_COPY(glMappedBufferWriter);
-
- glMappedBufferWriter &
- operator++()
- {
- data++;
- return *this;
- }
-
- glMappedBufferWriter &
- operator++(int)
- {
- glMappedBufferWriter rtn {data};
- data++;
- return rtn;
- }
-
- T &
- operator*()
- {
- return *data;
- }
-
- T *
- operator->() const
- {
- return data;
- }
-
-private:
- explicit glMappedBufferWriter(T * data) : target {0}, data {data} { }
-
- GLenum target;
- T * data;
-};