Unity RenderTexture坐标系原点在iPad上是左下角,但在iPhone上是左上角5S

Unity RenderTexture coordinate system origin is bottom-left on iPad, but top-left on iPhone 5S

我正在使用 RenderTexture 在我的 Unity 游戏中截取屏幕截图。

我已经成功地将相机内容绘制到目标 RenderTexture 并使用以下代码抓取 RenderTexture 的部分内容(即:感兴趣区域):

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 坐标系的原点是 bottom-left(向上),但在 iPhone 就是top-left(向下)。

有谁知道我该如何解决这个问题?

我使用的是 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/