Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by FlorentAlbyon · Jul 28, 2020 at 03:34 PM · texture2dimagerendertexturescreenshotonpostrender

Texture2D saves as PNG correctly but doesn't display properly in RawImage

I have a small bit of code i uses to perform a screen capture of my main camera. Here's most of the code i have in my ScreenshotManager on my main camera:

 private Camera m_camera;
 private bool m_takeScreenshotOnNextFrame = false;

 [SerializeField]
 private RawImage m_image;

 private void OnPostRender()
     {
         if (m_takeScreenshotOnNextFrame)
         {
             m_takeScreenshotOnNextFrame = false;
             RenderTexture renderTexture = m_camera.targetTexture;
 
             Texture2D renderResult = new Texture2D(renderTexture.width, renderTexture.height, TextureFormat.ARGB32, false);
             Rect rect = new Rect(0, 0, renderTexture.width, renderTexture.height);
             renderResult.ReadPixels(rect, 0, 0);
 
             byte[] byteArray = renderResult.EncodeToPNG();
             System.IO.File.WriteAllBytes(Application.dataPath + "/TestScreen.png", byteArray);
             Debug.Log("Saved Screen.");
 
             m_image.texture = renderResult;
 
             RenderTexture.ReleaseTemporary(renderTexture);
             m_camera.targetTexture = null;
             m_camera.cullingMask = m_camera.cullingMask | (1 << LayerMask.NameToLayer("UI"));
             m_camera.fieldOfView = 60.0f;
         }
     }
 
     private void TakeScreenshot(int width, int height)
     {
         m_camera.targetTexture = RenderTexture.GetTemporary(width, height, 16);
         m_takeScreenshotOnNextFrame = true;
         m_camera.cullingMask = m_camera.cullingMask & ~(1 << LayerMask.NameToLayer("UI"));
         m_camera.fieldOfView = 50.0f;
     }

This code works fine for exporting the screenshot as a PNG, but i can't get it to work for displaying the texture on the UI with m_image. I've tried with RawImage and UIImage (with Sprite.Create) and both give me the same result: the image gets slightly, uniformly grey when i take the screenshot.

Here's how my RawImage is set up, if that can help: alt text

Any hint or advice on how i could get this to work is appreciated.

aaa.png (35.4 kB)
Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by FlorentAlbyon · Jul 29, 2020 at 12:36 PM

Found the issue. For anyone who'd stumble upon this problem, you need to call

 renderResult.Apply();

On your Texture2D before sending it to the RawImage or creating the sprite with Sprite.Create. This will apply all the modification you've done to your texture.

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

140 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Best way to capture super large screenshot images (all GPUs) 0 Answers

Texture2D.EncodeToPng() saves gray PNG, all texture data missing 1 Answer

Taking Non Power of Two Resolution Screen Shots 0 Answers

What am I missing? Saving EXR results in a properly sized blank/transparent EXR Image file. 0 Answers

RenderTexture to Texture2D 4 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges