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
41ffcf2bdf
commit
23d50fcda5
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