24577


Unityで作成中のアプリ内に、スクリーンショットを保存する機能を実装しています。  
スクリーンショットは、以下の流れで作成しています。

1\. Texture2D.ReadPixels() & Apply()で、読込&テクスチャを生成。  
2\. EncodeToPNG()で、byteデータを取得。  
3\. 2で取得したbyteデータをファイルに書き込み。

画像ファイルは生成できているのですが、  
iOSの機種？によって、挙動が異なる状況に遭遇しました。

具体例：  
・iPhone6で正常の向きの場合、iPhone5では上下が逆になる。

・上下を反転させる処理を組み込んだ場合、  
iPhone6で逆向きになり、iPhone5では、正常の向きになる。

サードパーティのライブラリ等は利用しておらず、UnityのAPIのみです。  
また、アプリ内で、機種による分岐処理は含んでいないため、何が原因なのかがわからない状況です。

問題を引き起こしている原因、または解決方法等などを教えていただけないでしょうか？

動作環境  
・Unity 5.3.4 (ただし、記憶にあるかぎり、実装当初（2015/11頃)のバージョンから発生済）  
・Mac


CC BY-SA 3.0
2016-04-29T08:59:27.737
24451
2016-05-05T04:15:23.950
2016-05-02T04:36:19.253
3766
3766
question
ios unity3d
Unityアプリでスクリーンキャプチャした画像が、iOS機種によって挙動がことなる


※原因がわかりましたので、自己回答です。

不具合ではなく、Unityの仕様でした。  
<http://docs.unity3d.com/ja/current/Manual/SL-PlatformDifferences.html>

Build Settingsで、"Auto Graphics API"が有効だったため、  
実機に出力した際は、  
iPhone6 - Metal  
iPhone5s - OpengGLES  
という異なる動作になり、報告した状況が発生していました。

"Auto Graphics API"のチェックを外して、  
OpenGLES3  
OpenGLES2  
を指定することで、現象が発生しなくなることを確認、対応できました。


CC BY-SA 3.0
2016-05-05T04:15:23.950
24577
2016-05-05T04:15:23.950
3766
24451
answer