Cache surfaces only update in locations that require updating
This commit is contained in:
parent
50fcaee52c
commit
81ac5a2302
3 changed files with 67 additions and 31 deletions
|
|
@ -19,10 +19,10 @@ class DrawingProgramCacheBVHNode {
|
|||
Vector2i resolution;
|
||||
struct DrawCacheData {
|
||||
uint64_t lastDrawnComponentPlacement;
|
||||
uint64_t firstDrawnComponentPlacement;
|
||||
sk_sp<SkImage> img;
|
||||
sk_sp<SkSurface> surface;
|
||||
std::chrono::steady_clock::time_point lastRenderTime;
|
||||
DrawingProgramCache* attachedCache;
|
||||
std::optional<SCollision::AABB<WorldScalar>> invalidBounds;
|
||||
};
|
||||
|
||||
std::optional<DrawCacheData> drawCache;
|
||||
|
|
@ -57,7 +57,7 @@ class DrawingProgramCache {
|
|||
void invalidate_cache_at_aabb_before_pos(const SCollision::AABB<WorldScalar>& aabb, uint64_t placementToInvalidateAt);
|
||||
void invalidate_cache_at_optional_aabb_before_pos(const std::optional<SCollision::AABB<WorldScalar>>& aabb, uint64_t placementToInvalidateAt);
|
||||
void clear();
|
||||
void draw_components_to_canvas(SkCanvas* canvas, const DrawData& drawData, uint64_t* lastDrawnComponentPlacement = nullptr);
|
||||
void draw_components_to_canvas(SkCanvas* canvas, const DrawData& drawData, uint64_t* lastDrawnComponentPlacement = nullptr, std::optional<SCollision::AABB<WorldScalar>> drawBounds = std::nullopt);
|
||||
const std::vector<CollabListType::ObjectInfoPtr>& get_unsorted_component_list() const;
|
||||
const std::chrono::steady_clock::time_point& get_last_bvh_build_time() const;
|
||||
void clear_own_cached_surfaces();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue