aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorGravatar Ruiqi Mao <ruiqimao@google.com>2018-07-03 11:38:15 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-07-03 16:07:44 +0000
commitb6307340e8a6a9d3a7517def7f5eaaadffd07d14 (patch)
tree7337790911d8e791d495f37f637382f3fb5acad3 /tools
parentb7b73f5bbec55020c873cab6f4e11444b4011c34 (diff)
added skeletal animation support to GPU backend
added caching of SkVertices Docs-Preview: https://skia.org/?cl=138596 Bug: skia: Change-Id: Ia750f55f5f6d0de250d9e9c5619f4d1ac856f9f5 Reviewed-on: https://skia-review.googlesource.com/138596 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.cpp38
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();