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)
|
void WgRenderDataShapePool::free(WgContext& context, WgRenderDataShape* dataShape)
|
||||||
{
|
{
|
||||||
dataShape->meshGroupShapes.release(context);
|
dataShape->meshGroupShapes.release(context);
|
||||||
|
dataShape->meshGroupShapesBBox.release(context);
|
||||||
dataShape->meshGroupStrokes.release(context);
|
dataShape->meshGroupStrokes.release(context);
|
||||||
|
dataShape->meshGroupStrokesBBox.release(context);
|
||||||
mPool.push(dataShape);
|
mPool.push(dataShape);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -74,13 +74,14 @@ RenderData WgRenderer::prepare(const RenderShape& rshape, RenderData data, const
|
||||||
auto renderDataShape = (WgRenderDataShape*)data;
|
auto renderDataShape = (WgRenderDataShape*)data;
|
||||||
if (!renderDataShape)
|
if (!renderDataShape)
|
||||||
renderDataShape = mRenderDataShapePool.allocate(mContext);
|
renderDataShape = mRenderDataShapePool.allocate(mContext);
|
||||||
|
|
||||||
// update geometry
|
// update geometry
|
||||||
if (flags & (RenderUpdateFlag::Path | RenderUpdateFlag::Stroke))
|
if ((!data) || (flags & (RenderUpdateFlag::Path | RenderUpdateFlag::Stroke))) {
|
||||||
renderDataShape->updateMeshes(mContext, rshape);
|
renderDataShape->updateMeshes(mContext, rshape);
|
||||||
|
}
|
||||||
|
|
||||||
// update paint settings
|
// update paint settings
|
||||||
if (flags & (RenderUpdateFlag::Transform | RenderUpdateFlag::Blend)) {
|
if ((!data) || (flags & (RenderUpdateFlag::Transform | RenderUpdateFlag::Blend))) {
|
||||||
WgShaderTypeMat4x4f modelMat(transform);
|
WgShaderTypeMat4x4f modelMat(transform);
|
||||||
WgShaderTypeBlendSettings blendSettings(mTargetSurface.cs, opacity);
|
WgShaderTypeBlendSettings blendSettings(mTargetSurface.cs, opacity);
|
||||||
renderDataShape->bindGroupPaint.initialize(mContext.device, mContext.queue, modelMat, blendSettings);
|
renderDataShape->bindGroupPaint.initialize(mContext.device, mContext.queue, modelMat, blendSettings);
|
||||||
|
|
Loading…
Add table
Reference in a new issue