From 9ac1b729f1790ebe7716ab6d91780b3649b93f8a Mon Sep 17 00:00:00 2001 From: Ruiqi Mao Date: Thu, 21 Jun 2018 11:24:13 -0400 Subject: fixed NIMA deformed vertices rendering Bug: skia: Change-Id: I43c1a86eead7701db052451c446f9ad59467f909 Reviewed-on: https://skia-review.googlesource.com/136610 Reviewed-by: Brian Osman Commit-Queue: Ruiqi Mao --- samplecode/Nima.cpp | 9 +++++++-- samplecode/SampleNima.cpp | 14 ++++++++------ 2 files changed, 15 insertions(+), 8 deletions(-) (limited to 'samplecode') diff --git a/samplecode/Nima.cpp b/samplecode/Nima.cpp index 4ac7d86137..047eec7ca4 100644 --- a/samplecode/Nima.cpp +++ b/samplecode/Nima.cpp @@ -10,11 +10,10 @@ #include "SkString.h" #include "SkVertices.h" #include "SkPaint.h" +#include "SkFilterQuality.h" #include "Resources.h" #include -#include - using namespace nima; SampleActor::SampleActor(std::string baseName) @@ -32,6 +31,7 @@ SampleActor::SampleActor(std::string baseName) // Create the paint. fPaint = std::make_unique(); fPaint->setShader(fTexture->makeShader(nullptr)); + fPaint->setFilterQuality(SkFilterQuality::kLow_SkFilterQuality); // Load the image nodes. fActorImages.reserve(m_ImageNodeCount); @@ -89,6 +89,11 @@ void SampleActorImage::render(const SampleActor* actor, SkCanvas* canvas) const float* attrBoneIdx = vertexData + j + 4; float* attrBoneWgt = vertexData + j + 8; + // Get deformed positions if necessary. + if (fActorImage->doesAnimationVertexDeform()) { + attrPosition = fActorImage->animationDeformedVertices() + i * 2; + } + // Deform the position. Vec2D position(attrPosition[0], attrPosition[1]); if (fActorImage->connectedBoneCount() > 0) { diff --git a/samplecode/SampleNima.cpp b/samplecode/SampleNima.cpp index ec7813b5a9..3f0caa9d9d 100644 --- a/samplecode/SampleNima.cpp +++ b/samplecode/SampleNima.cpp @@ -9,7 +9,7 @@ #include "Nima.h" #include "SkAnimTimer.h" #include "SkView.h" -#include +#include #include using namespace nima; @@ -17,7 +17,8 @@ using namespace nima; class NimaView : public SampleView { public: NimaView() - : fActor(nullptr) { + : fActor(nullptr) + , fAnimation(nullptr) { } protected: @@ -35,7 +36,7 @@ protected: fActor = std::make_unique("Robot"); // Get the animation. - fAnimation = fActor->animation("jump"); + fAnimation = fActor->animationInstance("attack"); } void onDrawContent(SkCanvas* canvas) override { @@ -53,15 +54,16 @@ protected: bool onAnimate(const SkAnimTimer& timer) override { // Apply the animation. if (fAnimation) { - float time = std::fmod(timer.secs(), fAnimation->duration()); - fAnimation->apply(time, fActor.get(), 1.0f); + float time = std::fmod(timer.secs(), fAnimation->max()); + fAnimation->time(time); + fAnimation->apply(1.0f); } return true; } private: std::unique_ptr fActor; - ActorAnimation* fAnimation = nullptr; + ActorAnimationInstance* fAnimation; typedef SampleView INHERITED; }; -- cgit v1.2.3