<!--
{
  "availability" : [
    "iOS: 8.0.0 - 26.0.0",
    "iPadOS: 8.0.0 - 26.0.0",
    "macCatalyst: 13.1.0 - 26.0.0",
    "macOS: 10.8.0 - 26.0.0",
    "tvOS: 9.0.0 - 26.0.0",
    "visionOS: 1.0.0 - 26.0.0",
    "watchOS: 3.0.0 - 26.0.0"
  ],
  "documentType" : "symbol",
  "framework" : "SceneKit",
  "identifier" : "/documentation/SceneKit/SCNRenderer",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "SceneKit"
    ],
    "preciseIdentifier" : "c:objc(cs)SCNRenderer"
  },
  "title" : "SCNRenderer"
}
-->

# SCNRenderer

A renderer for displaying a SceneKit scene in an existing Metal workflow or OpenGL context.

```
class SCNRenderer
```

## Overview

Use this class when you want to add content rendered by SceneKit to an app that already renders other content by using Metal, OpenGL, or OpenGL ES directly. To provide content for a SceneKit renderer, assign a [`SCNScene`](/documentation/SceneKit/SCNScene) object to its [`scene`](/documentation/SceneKit/SCNRenderer/scene) property.

For additional important methods and properties for working with SceneKit renderers, see [`SCNSceneRenderer`](/documentation/SceneKit/SCNSceneRenderer).

## Topics

### Creating a Renderer

[`+  rendererWithDevice:options:`](/documentation/SceneKit/SCNRenderer/init(device:options:))

Creates a renderer with the specified Metal device.

[`+  rendererWithContext:options:`](/documentation/SceneKit/SCNRenderer/init(context:options:))

Creates a renderer with the specified OpenGL context.

### Specifying a Scene

[`scene`](/documentation/SceneKit/SCNRenderer/scene)

The scene to be rendered.

### Managing Animation Timing

[`nextFrameTime`](/documentation/SceneKit/SCNRenderer/nextFrameTime)

The timestamp for the next frame to be rendered.

### Rendering a Scene Using Metal

[`-  renderAtTime:viewport:commandBuffer:passDescriptor:`](/documentation/SceneKit/SCNRenderer/render(atTime:viewport:commandBuffer:passDescriptor:))

Renders the scene’s contents at the specified system time in the specified Metal command buffer.

### Rendering a Scene Using OpenGL

[`-  render`](/documentation/SceneKit/SCNRenderer/render())

Renders the scene’s contents in the renderer’s OpenGL context.

[`-  renderAtTime:`](/documentation/SceneKit/SCNRenderer/render(atTime:))

Renders the scene’s contents at the specified system time in the renderer’s OpenGL context.

### Capturing a Snapshot

[`-  snapshotAtTime:withSize:antialiasingMode:`](/documentation/SceneKit/SCNRenderer/snapshot(atTime:with:antialiasingMode:))

Creates an image by drawing the renderer’s content at the specified system time.

## Relationships

### Conforms To

[`CVarArg`](/documentation/Swift/CVarArg)

[`Equatable`](/documentation/Swift/Equatable)

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

[`SCNSceneRenderer`](/documentation/SceneKit/SCNSceneRenderer)

[`SCNTechniqueSupport`](/documentation/SceneKit/SCNTechniqueSupport)

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

[`Hashable`](/documentation/Swift/Hashable)

### Inherits From

[`NSObject-swift.class`](/documentation/ObjectiveC/NSObject-swift.class)

---

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)