Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static Texture2D MakeScreenshot(Camera camera, int width, int height)
- {
- var screenshot = new Texture2D(width, height) {
- filterMode = FilterMode.Point
- };
- var previousRt = camera.targetTexture;
- var screenshotRt = RenderTexture.GetTemporary(width, height, 24, RenderTextureFormat.ARGB32);
- screenshotRt.filterMode = FilterMode.Point;
- var buffers = camera.GetCommandBuffers(CameraEvent.AfterLighting); // TODO: Hack for avoiding HDR writing
- foreach (var buffer in buffers)
- camera.RemoveCommandBuffer(CameraEvent.AfterLighting, buffer);
- camera.targetTexture = screenshotRt;
- camera.Render();
- var screenshotRtTmp = RenderTexture.GetTemporary(width, height, 24, RenderTextureFormat.ARGB32);
- screenshotRtTmp.filterMode = FilterMode.Point;
- GraphicHelper.TransformTexture(screenshotRt, new Color(0, 0, 0, 0), new Color(1, 1, 1, 0), screenshotRtTmp);
- RenderTexture.active = screenshotRtTmp;
- screenshot.ReadPixels(new Rect(0, 0, width, height), 0, 0);
- screenshot.Apply();
- camera.targetTexture = previousRt;
- RenderTexture.active = null;
- RenderTexture.ReleaseTemporary(screenshotRt);
- RenderTexture.ReleaseTemporary(screenshotRtTmp);
- foreach (var buffer in buffers)
- camera.AddCommandBuffer(CameraEvent.AfterLighting, buffer);
- return screenshot;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement