From f08ed21b3be552ac66bbb5fdcb92d4ccc7c439fc Mon Sep 17 00:00:00 2001 From: Sylvain Thery Date: Wed, 7 Nov 2012 14:03:13 +0100 Subject: [PATCH] one drawer sublist function added --- include/Utils/drawer.h | 6 ++++++ src/Utils/drawer.cpp | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/include/Utils/drawer.h b/include/Utils/drawer.h index 4dbe8d75..9579e6de 100644 --- a/include/Utils/drawer.h +++ b/include/Utils/drawer.h @@ -142,6 +142,12 @@ public: */ void callSubLists(std::vector indices, float opacity); + /** + * call a set of sub-lists + */ + void callSubLists(int first, int nb, float opacity); + + /** * use as glLineWidth */ diff --git a/src/Utils/drawer.cpp b/src/Utils/drawer.cpp index aefd6d9f..2fcecffa 100644 --- a/src/Utils/drawer.cpp +++ b/src/Utils/drawer.cpp @@ -208,6 +208,27 @@ void Drawer::callSubList(int index, float opacity) m_shader->disableVertexAttribs(); } +void Drawer::callSubLists(int first, int nb, float opacity) +{ + m_shader->setOpacity(opacity); + m_shader->enableVertexAttribs(); + + int last = first+nb; + for (int i = first; i< last; ++i) + if (i < int(m_begins.size())) + { + PrimParam* pp = & (m_begins[i]); + + if (pp->mode == GL_POINTS) + glPointSize(pp->width); + if ((pp->mode == GL_LINES) || (pp->mode == GL_LINE_LOOP)) + glLineWidth(pp->width); + glDrawArrays(pp->mode, pp->begin, pp->nb); + } + + m_shader->disableVertexAttribs(); +} + void Drawer::callSubLists(std::vector indices, float opacity) { m_shader->setOpacity(opacity); -- GitLab