---
title: "init(vertexCapacity:vertexAttributes:vertexLayouts:indexCapacity:indexType:)"
framework: realitykit
role: symbol
role_heading: Initializer
path: "realitykit/lowlevelmesh/descriptor-swift.struct/init(vertexcapacity:vertexattributes:vertexlayouts:indexcapacity:indextype:)"
---

# init(vertexCapacity:vertexAttributes:vertexLayouts:indexCapacity:indexType:)

Creates a descriptor for a low-level mesh.

## Declaration

```swift
init(vertexCapacity: Int = 0, vertexAttributes: [LowLevelMesh.Attribute] = [Attribute](), vertexLayouts: [LowLevelMesh.Layout] = [Layout](), indexCapacity: Int = 0, indexType: MTLIndexType = MTLIndexType.uint32)
```

## Parameters

- `vertexCapacity`: The maximum number of vertices the system can store in the mesh.
- `vertexAttributes`: The attributes of the vertices.
- `vertexLayouts`: The layouts for the vertex buffers.
- `indexCapacity`: The maximum number of vertices the system can store in a single buffer.
- `indexType`: The index type to use for the mesh.

## Discussion

Discussion To create a new LowLevelMesh, first create a Descriptor object and set its property values, then use that Descriptor with init(descriptor:).
