<!--
{
  "availability" : [
    "iOS: 8.0.0 -",
    "iPadOS: 8.0.0 -",
    "macCatalyst: 13.1.0 -",
    "macOS: 10.11.0 -",
    "tvOS: -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Metal",
  "identifier" : "/documentation/Metal/MTLDrawable/present()",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "Metal"
    ],
    "preciseIdentifier" : "c:objc(pl)MTLDrawable(im)present"
  },
  "title" : "present()"
}
-->

# present()

Presents the drawable onscreen as soon as possible.

```
func present()
```

## Discussion

When a command queue schedules a command buffer for execution, it tracks whether any commands in that command buffer need to render or write to the drawable object. When you call this method, the drawable presents its contents as soon as possible after all scheduled render or write requests for that drawable are complete.

> Note:
> To avoid presenting a drawable before any work is scheduled, or to avoid holding on to a drawable longer than necessary, call a command buffer’s ``doc://com.apple.metal/documentation/Metal/MTLCommandBuffer/present(_:)`` method instead of this method. The ``doc://com.apple.metal/documentation/Metal/MTLCommandBuffer/present(_:)`` method is a convenience method that calls the drawable’s ``doc://com.apple.metal/documentation/Metal/MTLDrawable/present()`` method after the command queue schedules that command buffer for execution.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)