summaryrefslogtreecommitdiff
path: root/include/llmr/geometry/buffer.hpp
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2014-05-20 17:38:52 +0200
committerKonstantin Käfer <mail@kkaefer.com>2014-05-21 10:55:09 +0200
commit13939b26d9dd270294f3491759362f62a52a8a13 (patch)
tree3e094ed77469a4a028ded41908e1879919117dd8 /include/llmr/geometry/buffer.hpp
parent238fe86571772da67cc5b3e23012b75904b0f9fb (diff)
downloadqtlocation-mapboxgl-13939b26d9dd270294f3491759362f62a52a8a13.tar.gz
first shot at composited blending
still missing: - stencil+depth mask - alpha compositing
Diffstat (limited to 'include/llmr/geometry/buffer.hpp')
-rw-r--r--include/llmr/geometry/buffer.hpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/include/llmr/geometry/buffer.hpp b/include/llmr/geometry/buffer.hpp
index 6f43774e50..27807c809c 100644
--- a/include/llmr/geometry/buffer.hpp
+++ b/include/llmr/geometry/buffer.hpp
@@ -40,7 +40,10 @@ public:
}
glBindBuffer(bufferType, buffer);
if (force) {
- assert("Buffer was already deleted" && array != nullptr);
+ if (array == nullptr) {
+ throw std::runtime_error("Buffer was already deleted or doesn't contain elements");
+ }
+
glBufferData(bufferType, pos, array, GL_STATIC_DRAW);
if (!retainAfterUpload) {
cleanup();
@@ -58,11 +61,15 @@ public:
protected:
// increase the buffer size by at least /required/ bytes.
inline void *addElement() {
- assert("Buffer is already bound to GPU" && buffer == 0);
+ if (buffer != 0) {
+ throw std::runtime_error("Can't add elements after buffer was bound to GPU");
+ }
if (length < pos + itemSize) {
while (length < pos + itemSize) length += defaultLength;
array = realloc(array, length);
- assert("Buffer reallocation failed" && array != nullptr);
+ if (array == nullptr) {
+ throw std::runtime_error("Buffer reallocation failed¯");
+ }
}
pos += itemSize;
return static_cast<char *>(array) + (pos - itemSize);
@@ -70,7 +77,9 @@ protected:
// Get a pointer to the item at a given index.
inline void *getElement(size_t index) {
- assert("Buffer was deleted" && array != nullptr);
+ if (array == nullptr) {
+ throw std::runtime_error("Buffer was already deleted or doesn't contain elements");
+ }
if (index * itemSize >= pos) {
throw new std::runtime_error("Can't get element after array bounds");