Update Util.cs

RenderTarget2D is volatile. This means when there is any change to screen resolution, the content will be lost. This is common when changing to full-screen, alt+tab, screensavers, and locking/unlocking the computer. We can counteract this by directly setting the content of Texture2D.
This commit is contained in:
BigRedPK 2013-06-12 10:46:05 -05:00
parent 00803c42a5
commit 2837adaf9d

View File

@ -76,7 +76,19 @@ namespace Spine {
// Release the GPU back to drawing to the screen
device.SetRenderTarget(null);
return result as Texture2D;
// RenderTarget2D are volatile and will be lost on screen resolution changes.
// So instead of using this directly, we create a non-voliate Texture2D.
// This is computationally slower, but should be safe as long as it is done
// on load.
Texture2D resultTexture = new Texture2D(device, (int)file.Width, (int)file.Height);
Color[] resultContent = new Color[Convert.ToInt32(file.Width * file.Height)];
result.GetData(resultContent);
resultTexture.SetData(resultContent);
// Dispose of the RenderTarget2D immediately.
result.Dispose();
return resultTexture;
}
}
}