- Home /
NullReferenceException: Converting Camera to RenderTexture to Texture2D
I am currently trying to convert a camera view to a RenderTexture to a Texture2D, so that I can later extract the pixels.
The issue that I am getting is that when I try to use the Texture2D.ReadPixels() method, I am getting a NullReferenceException on the camera.targetTexture.width.
The error that is thrown on the line:
var image = new Texture2D(cam.targetTexture.width, cam.targetTexture.height);
I am currently using this function:
private Texture2D RTImage(Camera cam)
{
// The Render Texture in RenderTexture.active is the one
// that will be read by ReadPixels.
//RenderTexture myRT = cam.targetTexture;
//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;
}
The lines calling it are:
Texture2D image = RTImage(Data_camera);
Data_camera is instantiated here:
public Camera Data_camera;
And I've checked that I've dragged the main camera into the slot in the inspector.
The actual error message from Unity is:
NullReferenceException: Object reference not set to an instance of an object
CameraTest.RTImage (UnityEngine.Camera cam) (at Assets/Scripts/CameraTest.cs:39)
CameraTest.Update () (at Assets/Scripts/CameraTest.cs:16)
Any help is appreciated. Thank you!
Your answer
Follow this Question
Related Questions
How to make camera position relative to a specific target. 1 Answer
Rotate camera 1 Answer
(2D) Camera negative boundaries 0 Answers
Render one object to each camera 2 Answers
Creating a Non Interactive Scene with Cameras (Max -> Unity) 1 Answer