Merge branch 'master' of goat:git/laserbrain_demo
authorJohn Tsiombikas <nuclear@member.fsf.org>
Wed, 12 Sep 2018 11:56:12 +0000 (14:56 +0300)
committerJohn Tsiombikas <nuclear@member.fsf.org>
Wed, 12 Sep 2018 11:56:12 +0000 (14:56 +0300)
src/dbg_gui.cc
src/opengl.c
src/opengl.h

index c1abce3..6a6511f 100644 (file)
@@ -149,7 +149,12 @@ static void render_func(ImDrawData *ddat)
                                glTexCoordPointer(2, GL_FLOAT, sizeof *vbuf, &vbuf[0].uv);
                                glColorPointer(4, GL_UNSIGNED_BYTE, sizeof *vbuf, &vbuf[0].col);
 
-                               glDrawElements(GL_TRIANGLES, cmd->ElemCount, GL_UNSIGNED_SHORT, ibuf);
+                               if(glcaps.draw_range) {
+                                       int max_vidx = cmdlist->VtxBuffer.Size - 1;
+                                       glDrawRangeElements(GL_TRIANGLES, 0, max_vidx, cmd->ElemCount, GL_UNSIGNED_SHORT, ibuf);
+                               } else {
+                                       glDrawElements(GL_TRIANGLES, cmd->ElemCount, GL_UNSIGNED_SHORT, ibuf);
+                               }
 
                                glDisableClientState(GL_VERTEX_ARRAY);
                                glDisableClientState(GL_TEXTURE_COORD_ARRAY);
index a7962c7..f5d6ebf 100644 (file)
@@ -17,11 +17,12 @@ int init_opengl(void)
        glewInit();
 
        glcaps.debug = GLEW_ARB_debug_output;
+       glcaps.draw_range = GLEW_EXT_draw_range_elements;
 
 #ifndef NDEBUG
        if(glcaps.debug) {
                info_log("Installing OpenGL debug callback\n");
-               glDebugMessageCallback(gldebug_logger, 0);
+               glDebugMessageCallbackARB(gldebug_logger, 0);
        }
 #endif
 
index 51d365a..c342384 100644 (file)
@@ -5,6 +5,7 @@
 
 struct GLCaps {
        int debug;      /* ARB_debug_output */
+       int draw_range; /* EXT_draw_range_elements */
 };
 
 extern struct GLCaps glcaps;