]> git.tdb.fi Git - libs/gl.git/blobdiff - source/batch.cpp
Initial support for instanced rendering
[libs/gl.git] / source / batch.cpp
index a59fad99f03b988309ef60042324df71ebf3c6ab..af1d243e6cba1551e6be65255a55e69a4e7029cf 100644 (file)
@@ -1,3 +1,4 @@
+#include <msp/gl/extensions/arb_draw_instanced.h>
 #include <msp/gl/extensions/ext_draw_range_elements.h>
 #include <msp/gl/extensions/msp_legacy_features.h>
 #include <msp/gl/extensions/msp_primitive_restart.h>
@@ -235,6 +236,16 @@ void Batch::draw() const
                glDrawElements(prim_type, size(), data_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(), data_type, data_ptr, count);
+}
+
 const void *Batch::setup_draw() const
 {
        if(restart)