Nous développons une application sur Unity3D qui prendra l'image de l'écran et la transférera à Texture2D. Nous avons des difficultés avec les performances sur les appareils à faible consommation.
Le code est donné ci-dessous. Nous faisons une capture d'écran, puis nous lisons des pixels (ReadPixels) - ici le problème se pose, une application fonctionne terriblement lentement.RenderTexture to Texture2D est très lent
Nous avons essayé de prendre la texture de l'appareil photo, mais cela ne fonctionne pas parce que notre scanner fonctionne en parallèle avec Kudan, et à son tour, il bloque l'accès à la caméra. Ensuite, nous avons essayé de limiter la zone d'écran à scanner (en prenant pour scanner une petite fenêtre, mais pas en plein écran) - mais il n'y avait pas d'augmentation visible de la performance.
Quelqu'un peut-il m'aider?
Voici notre code:
IEnumerator DecodeScreen()
{
yield return new WaitForEndOfFrame();
RenderTexture RT = new RenderTexture(Screen.width, Screen.height,24);
Texture2D screen = new Texture2D(RT.width, RT.height, TextureFormat.RGB24, false, false);
screen.ReadPixels(new Rect(0, 0, RT.width, RT.height), 0, 0);
screen.Apply();
Debug.Log(resultText.text);
GetComponent().targetTexture = null;
Destroy(RT);
}