---
title: "makeArgumentEncoder(bufferIndex:)"
framework: metal
role: symbol
role_heading: Instance Method
path: "metal/mtlfunction/makeargumentencoder(bufferindex:)"
---

# makeArgumentEncoder(bufferIndex:)

Creates an argument encoder for an argument buffer that’s one of this function’s arguments.

## Declaration

```swift
func makeArgumentEncoder(bufferIndex: Int) -> any MTLArgumentEncoder
```

## Parameters

- `bufferIndex`: The index of an argument buffer in the function’s argument list. This method fails if the specified index doesn’t correspond to an argument buffer.

## Discussion

Discussion Resources encoded into an argument buffer by the MTLArgumentEncoder object need to match the structure of the argument buffer located at the specified buffer index. If you want to interpret a regular structure as an argument buffer, at least one of the members of the structure needs to have an [[id(n)]] attribute.

## See Also

### Creating argument encoders

- [makeArgumentEncoder(bufferIndex:reflection:)](metal/mtlfunction/makeargumentencoder(bufferindex:reflection:).md)
