Legacy Documentation: Version 4.6(go to latest)
Language: English
  • C#
  • JS
  • Boo

Script language

Select your preferred scripting language. All code snippets will be displayed in this language.

Texture2D.ReadPixels

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

public function ReadPixels(source: Rect, destX: int, destY: int, recalculateMipMaps: bool = true): void;
public void ReadPixels(Rect source, int destX, int destY, bool recalculateMipMaps = true);
public def ReadPixels(source as Rect, destX as int, destY as int, recalculateMipMaps as bool = true) as void

Parameters

source Rectangular region of the view to read from.
destX Horizontal pixel position in the texture to place the pixels that are read.
destY Vertical pixel position in the texture to place the pixels that are read.
recalculateMipMaps Should the texture's mipmaps be recalculated after reading?

Description

Read screen pixels into the saved texture data.

This will copy a rectangular pixel area from the currently active RenderTexture or the view (specified by the source parameter) into the position defined by destX and destY. Both coordinates use pixel space - (0,0) is lower left.

If recalculateMipMaps is set to true, the mip maps of the texture will also be updated. If recalculateMipMaps is set to false, you must call Apply to recalculate them.

This function works only on ARGB32 and RGB24 texture formats. The texture also has to have Read/Write Enabled flag set in the import settings. ReadPixels is unsupported on Flash.

	// This script should be attached to a camera. 

// Grab the camera's view when this variable is true. var grab: boolean;

// The "display" is the object whose texture will be set // to the captured image. var display: Renderer;

function OnPostRender() { if (grab) { // Make a new texture of the right size and // read the camera image into it. var tex = new Texture2D(128, 128); tex.ReadPixels(new Rect(0, 0, 128, 128), 0, 0); tex.Apply(); // Set the display texture to the newly captured image. display.material.mainTexture = tex; // Reset the grab variable to avoid making multiple // captures. grab = false; } }
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    public bool grab;
    public Renderer display;
    void OnPostRender() {
        if (grab) {
            Texture2D tex = new Texture2D(128, 128);
            tex.ReadPixels(new Rect(0, 0, 128, 128), 0, 0);
            tex.Apply();
            display.material.mainTexture = tex;
            grab = false;
        }
    }
}
import UnityEngine
import System.Collections

public class ExampleClass(MonoBehaviour):

	public grab as bool

	public display as Renderer

	def OnPostRender() as void:
		if grab:
			tex as Texture2D = Texture2D(128, 128)
			tex.ReadPixels(Rect(0, 0, 128, 128), 0, 0)
			tex.Apply()
			display.material.mainTexture = tex
			grab = false

See Also: EncodeToPNG.