---
title: SCNProgramDelegate
framework: scenekit
role: symbol
role_heading: Protocol
path: scenekit/scnprogramdelegate
---

# SCNProgramDelegate

The interface for tracking errors that occur when compiling shader source code.

## Declaration

```swift
protocol SCNProgramDelegate : NSObjectProtocol
```

## Overview

Overview You create and use custom shader programs with the  SCNProgram class.

## Topics

### Handling Shader Compilation Errors

- [program(_:handleError:)](scenekit/scnprogramdelegate/program(_:handleerror:).md)
- [SCNErrorDomain](scenekit/scnerrordomain.md)
- [SceneKit Error Codes](scenekit/1409723-scenekit-error-codes.md)

### Finding Fragment Opaqueness

- [programIsOpaque(_:)](scenekit/scnprogramdelegate/programisopaque(_:).md)

### Binding and Unbinding Values

- [program(_:bindValueForSymbol:atLocation:programID:renderer:)](scenekit/scnprogramdelegate/program(_:bindvalueforsymbol:atlocation:programid:renderer:).md)
- [program(_:unbindValueForSymbol:atLocation:programID:renderer:)](scenekit/scnprogramdelegate/program(_:unbindvalueforsymbol:atlocation:programid:renderer:).md)

## Relationships

### Inherits From

- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### Providing a Delegate Object

- [delegate](scenekit/scnprogram/delegate.md)
