Quantcast
Channel: Questions in topic: "post processing"
Viewing all articles
Browse latest Browse all 713

Capture Screen with post effect

$
0
0
Hello. I search my problem but i don't find clear answer. I use Edge Detection and try to save result to render texture then save whole data to png file. private void CreateScreenShoot() { if (DataStorageBase.errorExists == true) { return; } TakeScreenshot?.Invoke(false); camera.targetTexture = renderTexture; camera.Render(); // read pixels will read from the currently active render texture so make our offscreen // render texture active and then read the pixels RenderTexture.active = renderTexture; screenShot.ReadPixels(rect, 0, 0); // reset active camera texture and render texture camera.targetTexture = null; RenderTexture.active = null; string filename = DataStorageBase.ChosenImage; SaveTexture(filename,screenShot, format); TakeScreenshot?.Invoke(true); } private static void SaveTexture(string filename, Texture2D screenShot, ImageFormat format) { // pull in our file header/data bytes for the specified image format (has to be done from main thread) byte[] fileHeader = null; byte[] fileData = null; if (format == ImageFormat.RAW) { fileData = screenShot.GetRawTextureData(); } else if (format == ImageFormat.PNG) { fileData = screenShot.EncodeToPNG(); } else if (format == ImageFormat.JPG) { fileData = screenShot.EncodeToJPG(); } else // ppm { // create a file header for ppm formatted file string headerStr = string.Format("P6\n{0} {1}\n255\n", screenShot.width, screenShot.height); fileHeader = System.Text.Encoding.ASCII.GetBytes(headerStr); fileData = screenShot.GetRawTextureData(); } int x =filename.LastIndexOf("\\"); string name = filename.Substring(x+1); filename = Path.Combine(DataStorageBase.MiniatureDirectory, name.Replace("svg", "png"));//DataStorageBase.MiniaturesSavingExtension); // create new thread to save the image to file (only operation that can be done in background) new System.Threading.Thread(() => { // create file and write optional header with image bytes var f = System.IO.File.Create(filename); if (fileHeader != null) f.Write(fileHeader, 0, fileHeader.Length); f.Write(fileData, 0, fileData.Length); f.Close(); }).Start(); } But the problem is that i dont know how to transmit image from post process effect to camera target texture. Can anyone solve this problem and give me some advices?

Viewing all articles
Browse latest Browse all 713

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>