| Flutter Impeller |

Public Types | Public Member Functions | List of all members
impeller::VertexBufferBuilder< VertexType_, IndexType_ > Class Template Reference

`#include <vertex_buffer_builder.h>`

## Public Types
using | VertexType = VertexType_
using | IndexType = IndexType_

## Public Member Functions
| VertexBufferBuilder ()=default
| ~VertexBufferBuilder ()=default
constexpr impeller::IndexType | GetIndexType () const
void | SetLabel (const std::string &label)
void | Reserve (size_t count)
void | ReserveIndices (size_t count)
bool | HasVertices () const
size_t | GetVertexCount () const
size_t | GetIndexCount () const
const VertexType & | Last () const
VertexBufferBuilder & | AppendVertex (VertexType_ vertex)
VertexBufferBuilder & | AddVertices (std::initializer_list< VertexType_ > vertices)
VertexBufferBuilder & | AppendIndex (IndexType_ index)
VertexBuffer | CreateVertexBuffer (HostBuffer &host_buffer) const
VertexBuffer | CreateVertexBuffer (Allocator &device_allocator) const
void | IterateVertices (const std::function< void(VertexType &)> &iterator)

## Detailed Description

### template<class VertexType_, class IndexType_ = uint16_t>
class impeller::VertexBufferBuilder< VertexType_, IndexType_ >

Definition at line 36 of file vertex_buffer_builder.h.

## Member Typedef Documentation

## ◆ IndexType

template<class VertexType_ , class IndexType_ = uint16_t>

using impeller::VertexBufferBuilder< VertexType_, IndexType_ >::IndexType = IndexType_

Definition at line 39 of file vertex_buffer_builder.h.

## ◆ VertexType

template<class VertexType_ , class IndexType_ = uint16_t>

using impeller::VertexBufferBuilder< VertexType_, IndexType_ >::VertexType = VertexType_

Definition at line 38 of file vertex_buffer_builder.h.

## Constructor & Destructor Documentation

## ◆ VertexBufferBuilder()

template<class VertexType_ , class IndexType_ = uint16_t>

impeller::VertexBufferBuilder< VertexType_, IndexType_ >::VertexBufferBuilder | ( |  | ) |
| default

## ◆ ~VertexBufferBuilder()

template<class VertexType_ , class IndexType_ = uint16_t>

impeller::VertexBufferBuilder< VertexType_, IndexType_ >::~VertexBufferBuilder | ( |  | ) |
| default

## Member Function Documentation

## ◆ AddVertices()

template<class VertexType_ , class IndexType_ = uint16_t>

VertexBufferBuilder& impeller::VertexBufferBuilder< VertexType_, IndexType_ >::AddVertices | ( | std::initializer_list< VertexType_ > | vertices | ) |
| inline

Definition at line 82 of file vertex_buffer_builder.h.

83 {
84 vertices_.reserve(vertices.size());
85 for (auto& vertex : vertices) {
86 vertices_.emplace_back(std::move(vertex));
87 }
88 return *this;
89 }

Referenced by impeller::testing::RendererDartTest::RenderDartToPlayground(), and impeller::testing::TEST_P().

## ◆ AppendIndex()

template<class VertexType_ , class IndexType_ = uint16_t>

VertexBufferBuilder& impeller::VertexBufferBuilder< VertexType_, IndexType_ >::AppendIndex | ( | IndexType_ | index | ) |
| inline

Definition at line 91 of file vertex_buffer_builder.h.

91 {
92 indices_.emplace_back(index);
93 return *this;
94 }

Referenced by impeller::testing::TEST_P().

## ◆ AppendVertex()

template<class VertexType_ , class IndexType_ = uint16_t>

VertexBufferBuilder& impeller::VertexBufferBuilder< VertexType_, IndexType_ >::AppendVertex | ( | VertexType_ | vertex | ) |
| inline

Definition at line 77 of file vertex_buffer_builder.h.

77 {
78 vertices_.emplace_back(std::move(vertex));
79 return *this;
80 }

## ◆ CreateVertexBuffer() [1/2]

template<class VertexType_ , class IndexType_ = uint16_t>

VertexBuffer impeller::VertexBufferBuilder< VertexType_, IndexType_ >::CreateVertexBuffer | ( | Allocator & | device_allocator | ) | const
| inline

Definition at line 105 of file vertex_buffer_builder.h.

105 {
106 VertexBuffer buffer;
107 // This can be merged into a single allocation.
108 buffer.vertex_buffer = CreateVertexBufferView(device_allocator);
109 buffer.index_buffer = CreateIndexBufferView(device_allocator);
110 buffer.vertex_count = GetIndexCount();
111 buffer.index_type = GetIndexType();
112 return buffer;
113 };

References impeller::VertexBufferBuilder< VertexType_, IndexType_ >::GetIndexCount(), impeller::VertexBufferBuilder< VertexType_, IndexType_ >::GetIndexType(), impeller::VertexBuffer::index_buffer, impeller::VertexBuffer::index_type, impeller::VertexBuffer::vertex_buffer, and impeller::VertexBuffer::vertex_count.

## ◆ CreateVertexBuffer() [2/2]

template<class VertexType_ , class IndexType_ = uint16_t>

VertexBuffer impeller::VertexBufferBuilder< VertexType_, IndexType_ >::CreateVertexBuffer | ( | HostBuffer & | host_buffer | ) | const
| inline

Definition at line 96 of file vertex_buffer_builder.h.

96 {
97 VertexBuffer buffer;
98 buffer.vertex_buffer = CreateVertexBufferView(host_buffer);
99 buffer.index_buffer = CreateIndexBufferView(host_buffer);
100 buffer.vertex_count = GetIndexCount();
101 buffer.index_type = GetIndexType();
102 return buffer;
103 };

References impeller::VertexBufferBuilder< VertexType_, IndexType_ >::GetIndexCount(), impeller::VertexBufferBuilder< VertexType_, IndexType_ >::GetIndexType(), impeller::VertexBuffer::index_buffer, impeller::VertexBuffer::index_type, impeller::VertexBuffer::vertex_buffer, and impeller::VertexBuffer::vertex_count.

Referenced by impeller::testing::RendererDartTest::RenderDartToPlayground(), and impeller::testing::TEST_P().

## ◆ GetIndexCount()

template<class VertexType_ , class IndexType_ = uint16_t>

size_t impeller::VertexBufferBuilder< VertexType_, IndexType_ >::GetIndexCount | ( |  | ) | const
| inline

Definition at line 68 of file vertex_buffer_builder.h.

68 {
69 return indices_.size() > 0 ? indices_.size() : vertices_.size();
70 }

Referenced by impeller::VertexBufferBuilder< VertexType_, IndexType_ >::CreateVertexBuffer(), and impeller::testing::TEST_P().

## ◆ GetIndexType()

template<class VertexType_ , class IndexType_ = uint16_t>

constexpr impeller::IndexType impeller::VertexBufferBuilder< VertexType_, IndexType_ >::GetIndexType | ( |  | ) | const
| inline constexpr

Definition at line 45 of file vertex_buffer_builder.h.

45 {
46 if (indices_.size() == 0) {
47 return impeller::IndexType::kNone;
48 }
49 if constexpr (sizeof(IndexType) == 2) {
50 return impeller::IndexType::k16bit;
51 }
52 if (sizeof(IndexType) == 4) {
53 return impeller::IndexType::k32bit;
54 }
55 return impeller::IndexType::kUnknown;
56 }

References impeller::k16bit, impeller::k32bit, impeller::kNone, and impeller::kUnknown.

Referenced by impeller::VertexBufferBuilder< VertexType_, IndexType_ >::CreateVertexBuffer(), and impeller::testing::TEST_P().

## ◆ GetVertexCount()

template<class VertexType_ , class IndexType_ = uint16_t>

size_t impeller::VertexBufferBuilder< VertexType_, IndexType_ >::GetVertexCount | ( |  | ) | const
| inline

Definition at line 66 of file vertex_buffer_builder.h.

66 { return vertices_.size(); }

Referenced by impeller::testing::TEST_P().

## ◆ HasVertices()

template<class VertexType_ , class IndexType_ = uint16_t>

bool impeller::VertexBufferBuilder< VertexType_, IndexType_ >::HasVertices | ( |  | ) | const
| inline

Definition at line 64 of file vertex_buffer_builder.h.

64 { return !vertices_.empty(); }

## ◆ IterateVertices()

template<class VertexType_ , class IndexType_ = uint16_t>

void impeller::VertexBufferBuilder< VertexType_, IndexType_ >::IterateVertices | ( | const std::function< void(VertexType &)> & | iterator | ) |
| inline

Definition at line 115 of file vertex_buffer_builder.h.

115 {
116 for (auto& vertex : vertices_) {
117 iterator(vertex);
118 }
119 }

## ◆ Last()

template<class VertexType_ , class IndexType_ = uint16_t>

const VertexType& impeller::VertexBufferBuilder< VertexType_, IndexType_ >::Last | ( |  | ) | const
| inline

Definition at line 72 of file vertex_buffer_builder.h.

72 {
73 FML_DCHECK(!vertices_.empty());
74 return vertices_.back();
75 }

## ◆ Reserve()

template<class VertexType_ , class IndexType_ = uint16_t>

void impeller::VertexBufferBuilder< VertexType_, IndexType_ >::Reserve | ( | size_t | count | ) |
| inline

Definition at line 60 of file vertex_buffer_builder.h.

60 { return vertices_.reserve(count); }

## ◆ ReserveIndices()

template<class VertexType_ , class IndexType_ = uint16_t>

void impeller::VertexBufferBuilder< VertexType_, IndexType_ >::ReserveIndices | ( | size_t | count | ) |
| inline

Definition at line 62 of file vertex_buffer_builder.h.

62 { return indices_.reserve(count); }

## ◆ SetLabel()

template<class VertexType_ , class IndexType_ = uint16_t>

void impeller::VertexBufferBuilder< VertexType_, IndexType_ >::SetLabel | ( | const std::string & | label | ) |
| inline

Definition at line 58 of file vertex_buffer_builder.h.

58 { label_ = label; }

Referenced by impeller::testing::TEST_P().

The documentation for this class was generated from the following file:

- impeller/renderer/vertex_buffer_builder.h

impeller::IndexType::k16bit
@ k16bit
impeller::IndexType::k32bit
@ k32bit
impeller::VertexBufferBuilder::GetIndexCount
size_t GetIndexCount() const
Definition: vertex_buffer_builder.h:68
impeller::IndexType::kNone
@ kNone
Does not use the index buffer.
impeller::VertexBufferBuilder::IndexType
IndexType_ IndexType
Definition: vertex_buffer_builder.h:39
impeller::VertexBufferBuilder::GetIndexType
constexpr impeller::IndexType GetIndexType() const
Definition: vertex_buffer_builder.h:45
impeller::IndexType::kUnknown
@ kUnknown