Browse Source

vertex buffer stores its size

Kajetan Johannes Hammerle 3 years ago
parent
commit
b1e81dcfef
2 changed files with 12 additions and 1 deletions
  1. 9 1
      rendering/VertexBuffer.cpp
  2. 3 0
      rendering/VertexBuffer.h

+ 9 - 1
rendering/VertexBuffer.cpp

@@ -1,7 +1,8 @@
 #include "rendering/VertexBuffer.h"
 
 VertexBuffer::VertexBuffer()
-    : vertexArray(GL::genVertexArray()), vertexBuffer(GL::genBuffer()) {
+    : vertexArray(GL::genVertexArray()), vertexBuffer(GL::genBuffer()),
+      size(0) {
 }
 
 VertexBuffer::~VertexBuffer() {
@@ -24,16 +25,19 @@ void VertexBuffer::setAttributes(const Attributes& attributes) {
 }
 
 void VertexBuffer::setStaticData(int size, const void* data) {
+    VertexBuffer::size = size;
     bindBuffer();
     GL::bufferDataStatic(size, data);
 }
 
 void VertexBuffer::setStreamData(int size, const void* data) {
+    VertexBuffer::size = size;
     bindBuffer();
     GL::bufferDataStream(size, data);
 }
 
 void VertexBuffer::setDynamicData(int size, const void* data) {
+    VertexBuffer::size = size;
     bindBuffer();
     GL::bufferDataDynamic(size, data);
 }
@@ -56,4 +60,8 @@ void VertexBuffer::drawStrip(int vertices, int offset) {
 void VertexBuffer::drawPoints(int vertices, int offset) {
     bindArray();
     GL::drawPoints(offset, vertices);
+}
+
+int VertexBuffer::getSize() const {
+    return size;
 }

+ 3 - 0
rendering/VertexBuffer.h

@@ -7,6 +7,7 @@
 class VertexBuffer final {
     GL::VertexArray vertexArray;
     GL::Buffer vertexBuffer;
+    int size;
 
 public:
     VertexBuffer();
@@ -26,6 +27,8 @@ public:
     void drawStrip(int vertices, int offset = 0);
     void drawPoints(int vertices, int offset = 0);
 
+    int getSize() const;
+
 private:
     void bindArray() const;
     void bindBuffer() const;