Wir entwickeln eine Anwendung auf Unity3D, die das Bild vom Bildschirm nehmen und auf Texture2D übertragen soll. Wir haben Schwierigkeiten mit der Leistung von (schwachen) Geräten.
Der Code ist unten angegeben. Wir machen einen Screenshot, dann lesen wir Pixel (ReadPixels) - hier entsteht das Problem, eine App läuft furchtbar langsam.RenderTexture zu Texture2D ist sehr langsam
Wir haben versucht, die Textur von der Kamera zu nehmen, aber es funktioniert nicht, weil unser Scanner parallel zu Kudan arbeitet und wiederum den Zugriff auf die Kamera blockiert. Dann haben wir versucht, den zu scannenden Bildschirmbereich einzuschränken (indem wir ein kleines Fenster scannen, aber nicht den ganzen Bildschirm) - aber es gab keine sichtbare Steigerung der Leistung.
Kann mir jemand helfen?
Hier ist unser 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);
}