]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/batch.cpp
Remove the Bindable class
[libs/gl.git] / source / core / batch.cpp
index f14cc307ff71b92deb212e9f759ac70f1c8d69f0..51746b37178a6345ca3e3ff1982a6bcdf7333e88 100644 (file)
@@ -1,7 +1,6 @@
 #include <msp/gl/extensions/arb_draw_instanced.h>
 #include <msp/gl/extensions/msp_primitive_restart.h>
 #include "batch.h"
-#include "bindable.h"
 #include "buffer.h"
 #include "error.h"
 #include "mesh.h"
@@ -55,6 +54,7 @@ unsigned Batch::restart_index = 0;
 Batch::Batch(PrimitiveType t):
        prim_type(t),
        index_type(UNSIGNED_SHORT),
+       gl_index_type(get_gl_type(index_type)),
        max_index(0),
        restart(false)
 { }
@@ -76,6 +76,7 @@ void Batch::set_index_type(DataType t)
                shrink<UInt32, UInt16>(data);
 
        index_type = t;
+       gl_index_type = get_gl_type(t);
        update_offset();
        dirty = true;
 }
@@ -186,20 +187,16 @@ unsigned Batch::get_index(unsigned i) const
 
 void Batch::draw() const
 {
-       BindRestore _bind_ibuf(get_buffer(), ELEMENT_ARRAY_BUFFER);
        const void *data_ptr = setup_draw();
-
-       glDrawElements(prim_type, size(), index_type, data_ptr);
+       glDrawElements(prim_type, size(), gl_index_type, data_ptr);
 }
 
 void Batch::draw_instanced(unsigned count) const
 {
        static Require req(ARB_draw_instanced);
 
-       BindRestore _bind_ibuf(get_buffer(), ELEMENT_ARRAY_BUFFER);
        const void *data_ptr = setup_draw();
-
-       glDrawElementsInstanced(prim_type, size(), index_type, data_ptr, count);
+       glDrawElementsInstanced(prim_type, size(), gl_index_type, data_ptr, count);
 }
 
 const void *Batch::setup_draw() const