mirror of
https://github.com/thorvg/thorvg.git
synced 2025-06-14 12:04:29 +00:00
wg_engine: clear bbox mesh lists
when cleaning the geometry of an object, it is also necessary to clean the bounding boxes and store them in the pool
This commit is contained in:
parent
45bf996a19
commit
9f08e4755c
2 changed files with 6 additions and 3 deletions
|
@ -388,7 +388,9 @@ WgRenderDataShape* WgRenderDataShapePool::allocate(WgContext& context)
|
|||
void WgRenderDataShapePool::free(WgContext& context, WgRenderDataShape* dataShape)
|
||||
{
|
||||
dataShape->meshGroupShapes.release(context);
|
||||
dataShape->meshGroupShapesBBox.release(context);
|
||||
dataShape->meshGroupStrokes.release(context);
|
||||
dataShape->meshGroupStrokesBBox.release(context);
|
||||
mPool.push(dataShape);
|
||||
}
|
||||
|
||||
|
|
|
@ -76,11 +76,12 @@ RenderData WgRenderer::prepare(const RenderShape& rshape, RenderData data, const
|
|||
renderDataShape = mRenderDataShapePool.allocate(mContext);
|
||||
|
||||
// update geometry
|
||||
if (flags & (RenderUpdateFlag::Path | RenderUpdateFlag::Stroke))
|
||||
if ((!data) || (flags & (RenderUpdateFlag::Path | RenderUpdateFlag::Stroke))) {
|
||||
renderDataShape->updateMeshes(mContext, rshape);
|
||||
}
|
||||
|
||||
// update paint settings
|
||||
if (flags & (RenderUpdateFlag::Transform | RenderUpdateFlag::Blend)) {
|
||||
if ((!data) || (flags & (RenderUpdateFlag::Transform | RenderUpdateFlag::Blend))) {
|
||||
WgShaderTypeMat4x4f modelMat(transform);
|
||||
WgShaderTypeBlendSettings blendSettings(mTargetSurface.cs, opacity);
|
||||
renderDataShape->bindGroupPaint.initialize(mContext.device, mContext.queue, modelMat, blendSettings);
|
||||
|
|
Loading…
Add table
Reference in a new issue