<!--
{
  "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/SCNNodeRendererDelegate/renderNode(_:renderer:arguments:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "SceneKit"
    ],
    "preciseIdentifier" : "c:objc(pl)SCNNodeRendererDelegate(im)renderNode:renderer:arguments:"
  },
  "title" : "renderNode(_:renderer:arguments:)"
}
-->

# renderNode(_:renderer:arguments:)

Tells the delegate to perform rendering for a node.

```
optional func renderNode(_ node: SCNNode, renderer: SCNRenderer, arguments: [String : Any])
```

## Parameters

`node`

The node to render.

`renderer`

The SceneKit object (such as an [`SCNView`](/documentation/SceneKit/SCNView) instance) responsible for rendering the scene.

`arguments`

A dictionary containing transform information necessary for rendering the node. See Rendering Transform Keys for possible keys. The value for each key is an <doc://com.apple.documentation/documentation/Foundation/NSValue> object containing an [`SCNMatrix4`](/documentation/SceneKit/SCNMatrix4-swift.struct) value.

## Discussion

Implement this method to perform custom rendering for a node. You should only execute Metal or OpenGL drawing commands (and any setup required to perform them) in this method—the results of modifying SceneKit objects in this method are undefined.

- To render using Metal, use the `renderer` parameter to retrieve the scene renderer’s [`currentRenderCommandEncoder`](/documentation/SceneKit/SCNSceneRenderer/currentRenderCommandEncoder) object and encode your own drawing commands. If you need to reference other Metal state, see the properties listed in [`SCNSceneRenderer`](/documentation/SceneKit/SCNSceneRenderer).
- To render using OpenGL, simply call the relevant OpenGL drawing commands—SceneKit automatically makes its OpenGL context the current context before calling this method. If you need to reference the OpenGL context being rendered into, examine the [`context`](/documentation/SceneKit/SCNSceneRenderer/context) property of the `renderer` parameter.

You must draw using the appropriate graphics technology for the view currently being rendered. Use the [`renderingAPI`](/documentation/SceneKit/SCNSceneRenderer/renderingAPI) property of the `renderer` object to determine whether Metal or OpenGL is in use.

---

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)