---
title: MDLVertexDescriptor
framework: modelio
role: symbol
role_heading: Class
path: modelio/mdlvertexdescriptor
---

# MDLVertexDescriptor

A description of the structure, format, and layout for vertex data buffers associated with a mesh.

## Declaration

```swift
class MDLVertexDescriptor
```

## Overview

Overview A MDLMesh object contains arrays of data for separate attributes of each vertex, such as position, color, surface normal vector, or texture coordinates. The vertex data for various attributes can be contained in one or more buffers and may be laid out in various contiguous or interleaved formats. You use a mesh’s vertexDescriptor property to determine the structure of vertex data for a mesh loaded from an asset file for use in rendering or processing a mesh. You also use vertex descriptors to describe the structure of existing vertex data when creating a new mesh.

## Topics

### Working with Vertex Attributes

- [attributes](modelio/mdlvertexdescriptor/attributes.md)
- [attributeNamed(_:)](modelio/mdlvertexdescriptor/attributenamed(_:).md)
- [addOrReplaceAttribute(_:)](modelio/mdlvertexdescriptor/addorreplaceattribute(_:).md)
- [setPackedOffsets()](modelio/mdlvertexdescriptor/setpackedoffsets().md)

### Working with Vertex Buffer Layouts

- [layouts](modelio/mdlvertexdescriptor/layouts.md)
- [setPackedStrides()](modelio/mdlvertexdescriptor/setpackedstrides().md)

### Resetting a Vertex Descriptor

- [reset()](modelio/mdlvertexdescriptor/reset().md)

### Copying a Vertex Descriptor

- [init(vertexDescriptor:)](modelio/mdlvertexdescriptor/init(vertexdescriptor:).md)

### Instance Methods

- [removeAttributeNamed(_:)](modelio/mdlvertexdescriptor/removeattributenamed(_:).md)

## Relationships

### Inherits From

- [NSObject](objectivec/nsobject-swift.class.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSCopying](foundation/nscopying.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### Managing Mesh Data

- [MDLMeshBuffer](modelio/mdlmeshbuffer.md)
- [MDLMeshBufferAllocator](modelio/mdlmeshbufferallocator.md)
- [MDLMeshBufferData](modelio/mdlmeshbufferdata.md)
- [MDLMeshBufferDataAllocator](modelio/mdlmeshbufferdataallocator.md)
- [MDLMeshBufferMap](modelio/mdlmeshbuffermap.md)
- [MDLMeshBufferZone](modelio/mdlmeshbufferzone.md)
- [MDLMeshBufferZoneDefault](modelio/mdlmeshbufferzonedefault.md)
- [MDLVertexAttribute](modelio/mdlvertexattribute.md)
- [MDLVertexAttributeData](modelio/mdlvertexattributedata.md)
- [MDLVertexBufferLayout](modelio/mdlvertexbufferlayout.md)
