// Blit the pixels on texture to the RenderTexture
Graphics.Blit(texture, tmp);
// Backup the currently set RenderTexture
RenderTexture previous = RenderTexture.active;
// Set the current RenderTexture to the temporary one we created
RenderTexture.active = tmp;
// Create a new readable Texture2D to copy the pixels to it
Texture2D myTexture2D = new Texture2D(texture.width, texture.height);
// Copy the pixels from the RenderTexture to the new Texture
myTexture2D.ReadPixels(new Rect(0, 0, tmp.width, tmp.height), 0, 0);
myTexture2D.Apply();
// Reset the active RenderTexture
RenderTexture.active = previous;
// Release the temporary RenderTexture
RenderTexture.ReleaseTemporary(tmp);
// "myTexture2D" now has the same pixels from "texture" and it's readable.
After EncodeToWebP result image wrong![shot-006](https://user-images.githubusercontent.com/24324641/88541408-5e1fe900-d01d-11ea-828b-0caca4655637.png)
`var textasset = Resources.Load ("webp");
var bytes = textasset.bytes;
Error lError; Texture2D texture = Texture2DExt.CreateTexture2DFromWebP(bytes, lMipmaps: true, lLinear: true, lError: out lError);
if (lError == Error.Success) { image2.texture = texture; } else { Debug.LogError("Webp Load Error : " + lError.ToString()); }
RenderTexture tmp = RenderTexture.GetTemporary( texture.width, texture.height, 0, RenderTextureFormat.Default, RenderTextureReadWrite.Linear);
// Blit the pixels on texture to the RenderTexture Graphics.Blit(texture, tmp); // Backup the currently set RenderTexture RenderTexture previous = RenderTexture.active; // Set the current RenderTexture to the temporary one we created RenderTexture.active = tmp;
// Create a new readable Texture2D to copy the pixels to it Texture2D myTexture2D = new Texture2D(texture.width, texture.height);
// Copy the pixels from the RenderTexture to the new Texture myTexture2D.ReadPixels(new Rect(0, 0, tmp.width, tmp.height), 0, 0); myTexture2D.Apply();
// Reset the active RenderTexture RenderTexture.active = previous;
// Release the temporary RenderTexture RenderTexture.ReleaseTemporary(tmp);
// "myTexture2D" now has the same pixels from "texture" and it's readable.
string fExport = Application.dataPath + "/test.webp"; byte[] bExport = myTexture2D.EncodeToWebP(25, out lError); File.WriteAllBytes(fExport, bExport);`