Render the camera manually.
This will render the camera. It will use the camera's clear flags, target texture and all other settings.
The camera will send OnPreCull, OnPreRender & OnPostRender to any scripts attached, and render any eventual image filters.This is used for taking precise control of render order. To make use of this feature, create a camera and disable it. Then call Render on it.You are not able to call the Render function from a camera that is currently rendering. If you wish to do this create a copy of the camera, and make it match the original one using CopyFrom.See Also: RenderWithShader.// Take a "screenshot" of a camera's Render Texture. function RTImage(cam: Camera) { // The Render Texture in RenderTexture.active is the one // that will be read by ReadPixels. var currentRT = RenderTexture.active; RenderTexture.active = cam.targetTexture; // Render the camera's view. cam.Render(); // Make a new texture and read the active Render Texture into it. var image = new Texture2D(cam.targetTexture.width, cam.targetTexture.height); image.ReadPixels(new Rect(0, 0, cam.targetTexture.width, cam.targetTexture.height), 0, 0); image.Apply(); // Replace the original active Render Texture. RenderTexture.active = currentRT; return image; }
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { Texture2D RTImage(Camera cam) { RenderTexture currentRT = RenderTexture.active; RenderTexture.active = cam.targetTexture; cam.Render(); Texture2D image = new Texture2D(cam.targetTexture.width, cam.targetTexture.height); image.ReadPixels(new Rect(0, 0, cam.targetTexture.width, cam.targetTexture.height), 0, 0); image.Apply(); RenderTexture.active = currentRT; return image; } }
import UnityEngine import System.Collections public class ExampleClass(MonoBehaviour): def RTImage(cam as Camera) as Texture2D: currentRT as RenderTexture = RenderTexture.active RenderTexture.active = cam.targetTexture cam.Render() image as Texture2D = Texture2D(cam.targetTexture.width, cam.targetTexture.height) image.ReadPixels(Rect(0, 0, cam.targetTexture.width, cam.targetTexture.height), 0, 0) image.Apply() RenderTexture.active = currentRT return image