From 04ab3830f779fdb92697a6b5101214ea462b765a Mon Sep 17 00:00:00 2001 From: David Gow Date: Wed, 13 Aug 2014 16:05:38 +0800 Subject: [PATCH] I am an idiot: the quadtree code is now fixed. tl;dr: needed more * by 2. iab;wtd*: The index buffers on the GPU contain _two_ elements per object, one for the top left of the object's bounding box, one for the bottom-right. We were taking that into account when computing the number of indices to give the DrawElements() call, but not when calculating the offset into the buffer. Oops. *: I am bored; want tedious detail --- src/objectrenderer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/objectrenderer.cpp b/src/objectrenderer.cpp index 998b62f..76aba52 100644 --- a/src/objectrenderer.cpp +++ b/src/objectrenderer.cpp @@ -42,7 +42,7 @@ void ObjectRenderer::RenderUsingGPU(unsigned first_obj_id, unsigned last_obj_id) m_shader_program.Use(); m_ibo.Bind(); - glDrawElements(GL_LINES, (last_index-first_index)*2, GL_UNSIGNED_INT, (GLvoid*)(first_index*sizeof(uint32_t))); + glDrawElements(GL_LINES, (last_index-first_index)*2, GL_UNSIGNED_INT, (GLvoid*)(2*first_index*sizeof(uint32_t))); } @@ -328,7 +328,7 @@ void BezierRenderer::RenderUsingGPU(unsigned first_obj_id, unsigned last_obj_id) glUniform1i(m_shader_program.GetUniformLocation("bezier_buffer_texture"), 0); glUniform1i(m_shader_program.GetUniformLocation("bezier_id_buffer_texture"), 1); m_ibo.Bind(); - glDrawElements(GL_LINES, (last_index-first_index)*2, GL_UNSIGNED_INT, (GLvoid*)(first_index*sizeof(uint32_t))); + glDrawElements(GL_LINES, (last_index-first_index)*2, GL_UNSIGNED_INT, (GLvoid*)(2*first_index*sizeof(uint32_t))); } /** -- 2.20.1