diff --git a/engine/src/flutter/impeller/compositor/vertex_buffer_builder.h b/engine/src/flutter/impeller/compositor/vertex_buffer_builder.h index 12b093ca2e8..db2dffdf850 100644 --- a/engine/src/flutter/impeller/compositor/vertex_buffer_builder.h +++ b/engine/src/flutter/impeller/compositor/vertex_buffer_builder.h @@ -31,10 +31,18 @@ class VertexBufferBuilder { void SetLabel(std::string label) { label_ = std::move(label); } + void Reserve(size_t count) { return vertices_.reserve(count); } + + VertexBufferBuilder& AppendVertex(VertexType_ vertex) { + vertices_.emplace_back(std::move(vertex)); + return *this; + } + VertexBufferBuilder& AddVertices( std::initializer_list vertices) { - for (const auto& vertex : vertices) { - vertices_.push_back(vertex); + vertices_.reserve(vertices.size()); + for (auto& vertex : vertices) { + vertices_.emplace_back(std::move(vertex)); } return *this; } diff --git a/engine/src/flutter/impeller/entity/entity_renderer_impl.mm b/engine/src/flutter/impeller/entity/entity_renderer_impl.mm index 68e9af231f9..4d763a7d122 100644 --- a/engine/src/flutter/impeller/entity/entity_renderer_impl.mm +++ b/engine/src/flutter/impeller/entity/entity_renderer_impl.mm @@ -3,6 +3,7 @@ // found in the LICENSE file. #include "impeller/entity/entity_renderer_impl.h" +#include "impeller/compositor/vertex_buffer_builder.h" namespace impeller { @@ -39,6 +40,8 @@ bool EntityRendererImpl::RenderEntity(const Surface& surface, return false; } + VertexBufferBuilder builder; + VS::FrameInfo frame_info; frame_info.mvp = Matrix::MakeOrthographic(surface.GetSize()) * entity.GetTransformation();