From 7031d7fc502302b7cb5af104871026912989478b Mon Sep 17 00:00:00 2001 From: RuiwenTang Date: Fri, 13 Dec 2024 15:13:37 +0800 Subject: [PATCH] gl_engine: Fix gradient color not correct when shape has opacity When rendering gradient color, needs to take opacity value into consider. --- src/renderer/gl_engine/tvgGlRenderer.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/renderer/gl_engine/tvgGlRenderer.cpp b/src/renderer/gl_engine/tvgGlRenderer.cpp index da7e1ff2..63d38883 100644 --- a/src/renderer/gl_engine/tvgGlRenderer.cpp +++ b/src/renderer/gl_engine/tvgGlRenderer.cpp @@ -342,7 +342,7 @@ void GlRenderer::drawPrimitive(GlShape& sdata, const Fill* fill, RenderUpdateFla }); } - float alpha = 1.0f; + auto alpha = sdata.opacity / 255.f; if (flag & RenderUpdateFlag::GradientStroke) { float strokeWidth = sdata.rshape->strokeWidth(); @@ -401,7 +401,7 @@ void GlRenderer::drawPrimitive(GlShape& sdata, const Fill* fill, RenderUpdateFla uint32_t nStops = 0; for (uint32_t i = 0; i < stopCnt; ++i) { - if (i > 0 && gradientBlock.stopPoints[nStops - 1] > stops[i].offset) continue; + if (i > 0 && gradientBlock.stopPoints[nStops - 1] > stops[i].offset) continue; gradientBlock.stopPoints[i] = stops[i].offset; gradientBlock.stopColors[i * 4 + 0] = stops[i].r / 255.f; @@ -419,7 +419,7 @@ void GlRenderer::drawPrimitive(GlShape& sdata, const Fill* fill, RenderUpdateFla fx = P(radialFill)->fx; fy = P(radialFill)->fy; fr = P(radialFill)->fr; - + gradientBlock.centerPos[0] = fx; gradientBlock.centerPos[1] = fy; gradientBlock.centerPos[2] = x;