]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/batch.cpp
Use the same index type for all of a Mesh's batches
[libs/gl.git] / source / core / batch.cpp
index 68e232ba29de5447fd9050d27894000f2765e86f..ebd7b049125137d2fb89f9d40255d44a139f5b8c 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"
@@ -66,6 +65,8 @@ Batch::~Batch()
 
 void Batch::set_index_type(DataType t)
 {
+       if(t==index_type)
+               return;
        if(t!=UNSIGNED_SHORT && t!=UNSIGNED_INT)
                throw invalid_argument("Batch::set_data_type");
        if(t==UNSIGNED_SHORT && max_index>0xFFFE)
@@ -188,9 +189,7 @@ 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(), gl_index_type, data_ptr);
 }
 
@@ -198,9 +197,7 @@ 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(), gl_index_type, data_ptr, count);
 }