# VertexIterator

Class · category: Graphics

Source: https://github.com/playcanvas/engine/blob/970d89f6d3bc6667f4e1f88153abd6e7e82ed52c/src/platform/graphics/vertex-iterator.js#L240

A vertex iterator simplifies the process of writing vertex data to a vertex buffer.

## Constructors

### constructor

```ts
new VertexIterator(vertexBuffer: VertexBuffer)
```

Create a new VertexIterator instance.

**Parameters**

- `vertexBuffer` ([`VertexBuffer`](https://api.playcanvas.com/engine/classes/VertexBuffer.md)): The vertex buffer to be iterated.

## Properties

### element

```ts
element: {}
```

The vertex buffer elements.

## Methods

### end

```ts
end(): void
```

Notifies the vertex buffer being iterated that writes are complete. Internally the vertex
buffer is unlocked and vertex data is uploaded to video memory.

**Example**

```ts
const iterator = new VertexIterator(vertexBuffer);
iterator.element[SEMANTIC_POSITION].set(-0.9, -0.9, 0.0);
iterator.element[SEMANTIC_COLOR].set(255, 0, 0, 255);
iterator.next();
iterator.element[SEMANTIC_POSITION].set(0.9, -0.9, 0.0);
iterator.element[SEMANTIC_COLOR].set(0, 255, 0, 255);
iterator.next();
iterator.element[SEMANTIC_POSITION].set(0.0, 0.9, 0.0);
iterator.element[SEMANTIC_COLOR].set(0, 0, 255, 255);
iterator.end();
```

### next

```ts
next(count?: number): void
```

Moves the vertex iterator on to the next vertex.

**Parameters**

- `count` (`number`, optional, default `1`): Number of steps to move on when calling next. Defaults to 1.

**Example**

```ts
const iterator = new VertexIterator(vertexBuffer);
iterator.element[SEMANTIC_POSITION].set(-0.9, -0.9, 0.0);
iterator.element[SEMANTIC_COLOR].set(255, 0, 0, 255);
iterator.next();
iterator.element[SEMANTIC_POSITION].set(0.9, -0.9, 0.0);
iterator.element[SEMANTIC_COLOR].set(0, 255, 0, 255);
iterator.next();
iterator.element[SEMANTIC_POSITION].set(0.0, 0.9, 0.0);
iterator.element[SEMANTIC_COLOR].set(0, 0, 255, 255);
iterator.end();
```
