我使用RenderTexture在我的Unity游戏中截取屏幕截图。
我已成功设法将相机内容绘制到目标RenderTexture
并使用以下代码获取部分RenderTexture
内容(即:感兴趣区域):< / p>
RenderTexture currentActiveRT = RenderTexture.active;
var renderTex = new RenderTexture ((int)renderTexSize.x, (int)renderTexSize.y, 24, RenderTextureFormat.ARGB32);
CameraScreenshot.targetTexture = renderTex;
CameraScreenshot.gameObject.SetActive (true);
CameraScreenshot.Render ();
RenderTexture.active = renderTex;
// 4. Create the final output Texture, which will have the the ROI drawn in the final size.
var tex = new Texture2D ((int)screenshotSize.x, (int)screenshotSize.y, TextureFormat.RGB24, false);
tex.ReadPixels (fROI, 0, 0, true);
// 5. Restore context and release resources.
RenderTexture.active = currentActiveRT;
Unity Editor和iPad设备上的一切都按预期工作,但是,在我的iPhone 5S设备上,最终输出错误,因为使用了RenderTexture
的不同区域。经过一些调试后,我意识到在编辑器和iPad上RenderTexture
坐标系的原点是左下角(向上),但在iPhone上它是左上角(向下)。
有谁知道如何解决这个问题?
答案 0 :(得分:0)
我使用的是Unity 5.2.3p3,问题是由Metal与OpenGL差异造成的:http://forum.unity3d.com/threads/rendertexture-coordinate-system-origin-is-bottom-left-on-ipad-but-top-left-on-iphone-5s.375009/