diff options
author | Ruiqi Mao <ruiqimao@google.com> | 2018-07-09 14:16:56 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-07-09 20:31:28 +0000 |
commit | 9a6e42ff18133ef77066b82cb7e2d19788edd968 (patch) | |
tree | 29ca7c0dbd690c572b8fe222314f83b65cab493b /tools | |
parent | c3833b4c152af3b6fa2a4c4ba7b1da02acd1af80 (diff) |
added caching of SkVertices
SkVertices can now be "volatile", meaning they should not be cached.
SkVertices is volatile by default if the argument is not given.
Pulled from reverted CL: https://skia-review.googlesource.com/c/skia/+/138596
Docs-Preview: https://skia.org/?cl=139545
Bug: skia:
Change-Id: I92cf832efe1c0aaa8f432eedde2678582dd2454e
Reviewed-on: https://skia-review.googlesource.com/139545
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Ruiqi Mao <ruiqimao@google.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/viewer/NIMASlide.cpp | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/tools/viewer/NIMASlide.cpp b/tools/viewer/NIMASlide.cpp index c13ff2f11d..25d023f67b 100644 --- a/tools/viewer/NIMASlide.cpp +++ b/tools/viewer/NIMASlide.cpp @@ -62,7 +62,7 @@ public: this->updateBones(); // Update the vertices object. - this->updateVerticesObject(false); + this->updateVerticesObject(false, false); } void renderBackend(SkCanvas* canvas) { @@ -70,16 +70,13 @@ public: if (fRenderMode != kBackend_RenderMode) { fRenderMode = kBackend_RenderMode; this->updateVertices(); - this->updateVerticesObject(false); + this->updateVerticesObject(false, false); } - canvas->save(); - // Update the vertex data. - if (fActorImage->doesAnimationVertexDeform() && fActorImage->isVertexDeformDirty()) { + if (fActorImage->doesAnimationVertexDeform()) { this->updateVertices(); - this->updateVerticesObject(false); - fActorImage->isVertexDeformDirty(false); + this->updateVerticesObject(false, true); } // Update the bones. @@ -87,8 +84,6 @@ public: // Draw the vertices object. this->drawVerticesObject(canvas, true); - - canvas->restore(); } void renderImmediate(SkCanvas* canvas) { @@ -96,7 +91,7 @@ public: if (fRenderMode != kImmediate_RenderMode) { fRenderMode = kImmediate_RenderMode; this->updateVertices(); - this->updateVerticesObject(true); + this->updateVerticesObject(true, true); } // Update the vertex data. @@ -106,7 +101,7 @@ public: } // Update the vertices object. - this->updateVerticesObject(true); + this->updateVerticesObject(true, true); // Draw the vertices object. this->drawVerticesObject(canvas, false); @@ -198,7 +193,7 @@ private: nima_to_skmatrix(fActorImage->worldTransform().values(), fBones[0]); } - void updateVerticesObject(bool applyDeforms) { + void updateVerticesObject(bool applyDeforms, bool isVolatile) { std::vector<SkPoint>* positions = &fPositions; // Apply deforms if requested. @@ -229,7 +224,8 @@ private: fBoneIdx.data(), fBoneWgt.data(), fIndices.size(), - fIndices.data()); + fIndices.data(), + isVolatile); } void drawVerticesObject(SkCanvas* canvas, bool useBones) const { @@ -421,11 +417,19 @@ NIMASlide::~NIMASlide() {} void NIMASlide::draw(SkCanvas* canvas) { canvas->save(); - canvas->translate(500, 500); - canvas->scale(1, -1); + for (int i = 0; i < 10; i ++) { + for (int j = 0; j < 10; j ++) { + canvas->save(); - // Render the actor. - fActor->render(canvas, fRenderMode); + canvas->translate(1250 - 250 * i, 1250 - 250 * j); + canvas->scale(0.5, -0.5); + + // Render the actor. + fActor->render(canvas, fRenderMode); + + canvas->restore(); + } + } canvas->restore(); |