diff --git a/source/renderer/DebugRenderer.cpp b/source/renderer/DebugRenderer.cpp index 14d435cc7c..8d84367e90 100644 --- a/source/renderer/DebugRenderer.cpp +++ b/source/renderer/DebugRenderer.cpp @@ -185,7 +185,7 @@ void CDebugRenderer::DrawCameraFrustum(const CCamera& camera, const CColor& colo camera.GetViewQuad(camera.GetNearPlane(), nearPoints); camera.GetViewQuad(camera.GetFarPlane(), farPoints); - for(int i = 0; i < 4; i++) + for (int i = 0; i < 4; ++i) { nearPoints[i] = camera.m_Orientation.Transform(nearPoints[i]); farPoints[i] = camera.m_Orientation.Transform(farPoints[i]); @@ -210,50 +210,56 @@ void CDebugRenderer::DrawCameraFrustum(const CCamera& camera, const CColor& colo ADD(nearPoints[0]); ADD(nearPoints[1]); ADD(nearPoints[2]); + ADD(nearPoints[0]); + ADD(nearPoints[2]); ADD(nearPoints[3]); // Far plane. ADD(farPoints[0]); ADD(farPoints[1]); ADD(farPoints[2]); + ADD(farPoints[0]); + ADD(farPoints[2]); ADD(farPoints[3]); // Intermediate planes. CVector3D intermediatePoints[4]; - for(int i = 0; i < intermediates; ++i) + for (int i = 0; i < intermediates; ++i) { const float t = (i + 1.0f) / (intermediates + 1.0f); - for(int j = 0; j < 4; ++j) + for (int j = 0; j < 4; ++j) intermediatePoints[j] = nearPoints[j] * t + farPoints[j] * (1.0f - t); ADD(intermediatePoints[0]); ADD(intermediatePoints[1]); ADD(intermediatePoints[2]); + ADD(intermediatePoints[0]); + ADD(intermediatePoints[2]); ADD(intermediatePoints[3]); } overlayShader->VertexPointer(3, GL_FLOAT, 0, vertices.data()); overlayShader->AssertPointersBound(); - glDrawArrays(GL_QUADS, 0, vertices.size() / 3); + glDrawArrays(GL_TRIANGLES, 0, vertices.size() / 3); vertices.clear(); // Connection lines. - ADD(nearPoints[0]); - ADD(farPoints[0]); - ADD(nearPoints[1]); - ADD(farPoints[1]); - ADD(nearPoints[2]); - ADD(farPoints[2]); - ADD(nearPoints[3]); - ADD(farPoints[3]); - ADD(nearPoints[0]); - ADD(farPoints[0]); + for (int i = 0; i < 4; ++i) + { + const int nextI = (i + 1) % 4; + ADD(nearPoints[i]); + ADD(farPoints[nextI]); + ADD(farPoints[i]); + ADD(nearPoints[i]); + ADD(nearPoints[nextI]); + ADD(farPoints[nextI]); + } overlayShader->VertexPointer(3, GL_FLOAT, 0, vertices.data()); overlayShader->AssertPointersBound(); - glDrawArrays(GL_QUAD_STRIP, 0, vertices.size() / 3); + glDrawArrays(GL_TRIANGLES, 0, vertices.size() / 3); #undef ADD overlayTech->EndPass(); diff --git a/source/renderer/OverlayRenderer.cpp b/source/renderer/OverlayRenderer.cpp index dc5bf16aa5..eefd189ba2 100644 --- a/source/renderer/OverlayRenderer.cpp +++ b/source/renderer/OverlayRenderer.cpp @@ -646,9 +646,17 @@ void OverlayRenderer::RenderForegroundOverlays( shader->Uniform(str_transform, g_Renderer.GetSceneRenderer().GetViewCamera().GetViewProjection()); - float uvs[8] = { 0,1, 1,1, 1,0, 0,0 }; + const CVector2D uvs[6] = + { + {0.0f, 1.0f}, + {1.0f, 1.0f}, + {1.0f, 0.0f}, + {0.0f, 1.0f}, + {1.0f, 0.0f}, + {0.0f, 0.0f}, + }; - shader->TexCoordPointer(GL_TEXTURE0, 2, GL_FLOAT, sizeof(float)*2, &uvs[0]); + shader->TexCoordPointer(GL_TEXTURE0, 2, GL_FLOAT, sizeof(CVector2D), &uvs[0]); for (size_t i = 0; i < m->sprites.size(); ++i) { @@ -661,16 +669,19 @@ void OverlayRenderer::RenderForegroundOverlays( shader->Uniform(str_colorMul, sprite->m_Color); - CVector3D pos[4] = { + const CVector3D position[6] = + { sprite->m_Position + right*sprite->m_X0 + up*sprite->m_Y0, sprite->m_Position + right*sprite->m_X1 + up*sprite->m_Y0, sprite->m_Position + right*sprite->m_X1 + up*sprite->m_Y1, + sprite->m_Position + right*sprite->m_X0 + up*sprite->m_Y0, + sprite->m_Position + right*sprite->m_X1 + up*sprite->m_Y1, sprite->m_Position + right*sprite->m_X0 + up*sprite->m_Y1 }; - shader->VertexPointer(3, GL_FLOAT, sizeof(float)*3, &pos[0].X); + shader->VertexPointer(3, GL_FLOAT, sizeof(CVector3D), &position[0].X); - glDrawArrays(GL_QUADS, 0, (GLsizei)4); + glDrawArrays(GL_TRIANGLES, 0, 6); g_Renderer.GetStats().m_DrawCalls++; g_Renderer.GetStats().m_OverlayTris += 2;