# VideoRenderMode

> Type of destination for the images read by a VideoPlayer.

## Definition

* **Type:** Enum
* **Namespace:** [UnityEngine.Video](/engine/6000.7/script-reference/unityengine/video.md)
* **Assembly:** UnityEngine.VideoModule

```csharp
public enum VideoRenderMode
```

## Remarks

Set this enumeration to determine where and how the VideoPlayer renders the images of a video clip.

## Examples

```csharp
 // This script switches between the render modes when you press the Spacebar. 
 // To set up your project for this script: 
 // 1. Attach this script to a GameObject in your scene. 
 // 2. Add a VideoPlayer component to your GameObject. 
 // 3. Assign a Camera to the script component in the Inspector. 
 // 4. Add a plane to your scene. 
 // 5. Create a Material (right click in Asset folder, Create > Material). 
 // 6. Create a new RenderTexture (right click in Asset folder, Create > Material).
 // 7. Assign the RenderTexture to the Inspector of your material (Base Map).
 // 8. Assign the material to your plane. 

using UnityEngine;
using UnityEngine.Video;

public class VideoRenderModeExample : MonoBehaviour
{
    VideoPlayer videoPlayer;
    public RenderTexture renderTexture;
    Camera mainCamera;

    // Tracks the current render mode. 
    private int renderModeIndex = 0; 

    void Start()
    {
        mainCamera = Camera.main;
        videoPlayer = GetComponent<VideoPlayer>();
        videoPlayer.isLooping = true; 
        UpdateRenderMode();
    }

    private void Update()
    {
        // If you press the Spacebar, cycle through the render modes. 
        if (Input.GetKeyDown(KeyCode.Space)) 
        {
            renderModeIndex = (renderModeIndex + 1) % 5;
            UpdateRenderMode();
        }
    }

    void UpdateRenderMode()
    {
        ClearPreviousRenderMode();
        // Switch render mode when you press the Spacebar. 
        switch (renderModeIndex)
        {
            case 0:
                SwitchToRenderTexture();
                break;
            case 1:
                SwitchToCameraNearPlane();
                break;
            case 2:
                SwitchToCameraFarPlane();
                break;
            case 3:
                SwitchToAPIOnly();
                break;
            case 4:
                SwitchToMaterialOverride();
                break; 
        }
    }

    // Show video on the surface of an object. 
    void SwitchToRenderTexture()
    {
        videoPlayer.renderMode = VideoRenderMode.RenderTexture;
        videoPlayer.targetTexture = renderTexture;
        Debug.Log("Switched to RenderTexture mode");
    }

    // Show the video on your screen in front of your Scene.  
    void SwitchToCameraNearPlane()
    {
        videoPlayer.renderMode = VideoRenderMode.CameraNearPlane;
        videoPlayer.targetCamera = mainCamera;
        Debug.Log("Switched to CameraNearPlane mode");
    }

    // Show video in the background of your Scene, behind your objects. 
    void SwitchToCameraFarPlane()
    {
        videoPlayer.renderMode = VideoRenderMode.CameraFarPlane;
        videoPlayer.targetCamera = mainCamera;
        Debug.Log("Switched to CameraFarPlane mode");
    }

    // Don't show the video anywhere. 
    void SwitchToAPIOnly()
    {
        videoPlayer.renderMode = VideoRenderMode.APIOnly;
        Debug.Log("Switched to APIOnly mode");
    }

    // Show the video wherever a certain material is applied. 
    void SwitchToMaterialOverride()
    {
        videoPlayer.renderMode = VideoRenderMode.MaterialOverride;
        Debug.Log("Switched to Material Override mode");
    }

    // Clear the previous render target from the VideoPlayer. 
    void ClearPreviousRenderMode()
    {
        // Temporarily disable rendering. 
        videoPlayer.renderMode = VideoRenderMode.APIOnly; 
        videoPlayer.targetTexture = null;
        videoPlayer.targetCamera = null;

        // Clear the RenderTexture. 
        if (renderTexture != null)
        {
            RenderTexture.active = renderTexture;
            GL.Clear(true, true, Color.clear);
            RenderTexture.active = null;
        }
    }
}
```

## Fields

| Value                                                                                                     | Description                                                                                                           |
| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| [APIOnly](/engine/6000.7/script-reference/unityengine/video/videorendermode/apionly.md)                   | Don't draw the video content anywhere, but still make it available via the VideoPlayer's texture property in the API. |
| [CameraFarPlane](/engine/6000.7/script-reference/unityengine/video/videorendermode/camerafarplane.md)     | Draw video content behind a camera's scene.                                                                           |
| [CameraNearPlane](/engine/6000.7/script-reference/unityengine/video/videorendermode/cameranearplane.md)   | Draw video content in front of a camera's scene.                                                                      |
| [MaterialOverride](/engine/6000.7/script-reference/unityengine/video/videorendermode/materialoverride.md) | Draw the video content into a user-specified property of the current GameObject's material.                           |
| [RenderTexture](/engine/6000.7/script-reference/unityengine/video/videorendermode/rendertexture.md)       | Draw video content into a RenderTexture.                                                                              |
