| 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 &data_host_buffer, HostBuffer &indexes_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 35 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 38 of file vertex_buffer_builder.h.

## ◆ VertexType

template<class VertexType_ , class IndexType_ = uint16_t>

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

Definition at line 37 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 81 of file vertex_buffer_builder.h.

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

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 90 of file vertex_buffer_builder.h.

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

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 76 of file vertex_buffer_builder.h.

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

## ◆ 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 };
impeller::VertexBufferBuilder::GetIndexCount
size_t GetIndexCount() const
Definition: vertex_buffer_builder.h:67
impeller::VertexBufferBuilder::GetIndexType
constexpr impeller::IndexType GetIndexType() const
Definition: vertex_buffer_builder.h:44

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 & | data_host_buffer,
|  | HostBuffer & | indexes_host_buffer
| ) |  | const
| inline

Definition at line 95 of file vertex_buffer_builder.h.

96 {
97 VertexBuffer buffer;
98 buffer.vertex_buffer = CreateVertexBufferView(data_host_buffer);
99 buffer.index_buffer = CreateIndexBufferView(indexes_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 67 of file vertex_buffer_builder.h.

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

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
| inlineconstexpr

Definition at line 44 of file vertex_buffer_builder.h.

44 {
45 if (indices_.size() == 0) {
46 return impeller::IndexType::kNone;
47 }
48 if constexpr (sizeof(IndexType) == 2) {
49 return impeller::IndexType::k16bit;
50 }
51 if (sizeof(IndexType) == 4) {
52 return impeller::IndexType::k32bit;
53 }
54 return impeller::IndexType::kUnknown;
55 }
impeller::VertexBufferBuilder::IndexType
IndexType_ IndexType
Definition: vertex_buffer_builder.h:38
impeller::IndexType::k16bit
@ k16bit
impeller::IndexType::kUnknown
@ kUnknown
impeller::IndexType::kNone
@ kNone
Does not use the index buffer.
impeller::IndexType::k32bit
@ k32bit

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 65 of file vertex_buffer_builder.h.

65 { 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 63 of file vertex_buffer_builder.h.

63 { 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 71 of file vertex_buffer_builder.h.

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

## ◆ Reserve()

template<class VertexType_ , class IndexType_ = uint16_t>

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

Definition at line 59 of file vertex_buffer_builder.h.

59 { 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 61 of file vertex_buffer_builder.h.

61 { 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 57 of file vertex_buffer_builder.h.

57 { 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