diff options
author | 2018-06-29 14:32:21 -0400 | |
---|---|---|
committer | 2018-06-29 19:34:28 +0000 | |
commit | f510149da8d32f60f08d0a809eb037496079af3c (patch) | |
tree | 13b3670a481f3bae652968165d04f9ca4890d9bf /src/core/SkPictureRecord.cpp | |
parent | 38f118a2e7f986b06d69d0af41ec2d1af53dac39 (diff) |
skeletal animation support added to API and software backend
SkCanvas::drawVertices now supports overloads that take an array of bone deformation matrices.
SkVertices::MakeCopy and SkVertices::Builder now support two additional optional attributes, boneIndices and boneWeights.
Bug: skia:
Change-Id: I30a3b11691e7cdb13924907cc1401ff86d127aea
Reviewed-on: https://skia-review.googlesource.com/137221
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Ruiqi Mao <ruiqimao@google.com>
Diffstat (limited to 'src/core/SkPictureRecord.cpp')
-rw-r--r-- | src/core/SkPictureRecord.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/core/SkPictureRecord.cpp b/src/core/SkPictureRecord.cpp index 87c8c4d2fb..922fb6a425 100644 --- a/src/core/SkPictureRecord.cpp +++ b/src/core/SkPictureRecord.cpp @@ -682,14 +682,16 @@ void SkPictureRecord::onDrawDrawable(SkDrawable* drawable, const SkMatrix* matri this->validate(initialOffset, size); } -void SkPictureRecord::onDrawVerticesObject(const SkVertices* vertices, SkBlendMode mode, - const SkPaint& paint) { - // op + paint index + vertices index + mode - size_t size = 4 * kUInt32Size; +void SkPictureRecord::onDrawVerticesObject(const SkVertices* vertices, const SkMatrix* bones, + int boneCount, SkBlendMode mode, const SkPaint& paint) { + // op + paint index + vertices index + number of bones + bone matrices + mode + size_t size = 5 * kUInt32Size + boneCount * sizeof(SkMatrix); size_t initialOffset = this->addDraw(DRAW_VERTICES_OBJECT, &size); this->addPaint(paint); this->addVertices(vertices); + this->addInt(boneCount); + fWriter.write(bones, boneCount * sizeof(SkMatrix)); this->addInt(static_cast<uint32_t>(mode)); this->validate(initialOffset, size); |