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)
|
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