Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaria Volvenkova <d.volvenkova@corp.mail.ru>2016-12-07 17:11:18 +0300
committerGitHub <noreply@github.com>2016-12-07 17:11:18 +0300
commitc3f63077817c7a0137813f6af6308d61f80ae777 (patch)
treeec00e89d93f98ae92465b198a22a9ceae6c3611c /drape_frontend
parentbead015501025d6aa4bdf66fe5a07c906c3e21cc (diff)
parent4707e83608ce69b72c2d6dc4eeace2f6a9953a32 (diff)
Merge pull request #4896 from rokuz/line-rendering-cap-opt
Optimized caps rendering in lines
Diffstat (limited to 'drape_frontend')
-rw-r--r--drape_frontend/line_shape.cpp16
1 files changed, 7 insertions, 9 deletions
diff --git a/drape_frontend/line_shape.cpp b/drape_frontend/line_shape.cpp
index 4f92d2e266..b55592df75 100644
--- a/drape_frontend/line_shape.cpp
+++ b/drape_frontend/line_shape.cpp
@@ -245,21 +245,19 @@ public:
private:
void CreateRoundCap(glsl::vec2 const & pos)
{
- m_capGeometry.reserve(8);
-
+ // Here we use an equilateral triangle to render circle (incircle of a triangle).
+ static float const kSqrt3 = sqrt(3.0f);
float const radius = GetHalfWidth();
+ m_capGeometry.reserve(3);
m_capGeometry.push_back(CapVertex(CapVertex::TPosition(pos, m_params.m_depth),
- CapVertex::TNormal(-radius, radius, radius),
- CapVertex::TTexCoord(m_colorCoord)));
- m_capGeometry.push_back(CapVertex(CapVertex::TPosition(pos, m_params.m_depth),
- CapVertex::TNormal(-radius, -radius, radius),
+ CapVertex::TNormal(-radius * kSqrt3, -radius, radius),
CapVertex::TTexCoord(m_colorCoord)));
m_capGeometry.push_back(CapVertex(CapVertex::TPosition(pos, m_params.m_depth),
- CapVertex::TNormal(radius, radius, radius),
+ CapVertex::TNormal(radius * kSqrt3, -radius, radius),
CapVertex::TTexCoord(m_colorCoord)));
m_capGeometry.push_back(CapVertex(CapVertex::TPosition(pos, m_params.m_depth),
- CapVertex::TNormal(radius, -radius, radius),
+ CapVertex::TNormal(0, 2.0f * radius, radius),
CapVertex::TTexCoord(m_colorCoord)));
}
@@ -563,7 +561,7 @@ void LineShape::Draw(ref_ptr<dp::Batcher> batcher, ref_ptr<dp::TextureManager> t
{
dp::AttributeProvider capProvider(1, capSize);
capProvider.InitStream(0, m_lineShapeInfo->GetCapBindingInfo(), m_lineShapeInfo->GetCapData());
- batcher->InsertListOfStrip(m_lineShapeInfo->GetCapState(), make_ref(&capProvider), dp::Batcher::VertexPerQuad);
+ batcher->InsertTriangleList(m_lineShapeInfo->GetCapState(), make_ref(&capProvider));
}
}
else