Niedrige Leistung beim Ausführen von eglSwapBuffer und eglMakeCurrent
Ich entwickle ein Android Unity Plugin, mit dem der Benutzer sein / ihr Gameplay aufzeichnen kann
Übersicht meiner Lösung:
Mein Problem ist die Leistung während der Aufnahme ist nicht gut. FPS sinkt auf dem Samsung Galaxy S4 von 60 auf 40. Ich habe versucht, die Ausführungszeit von Rendervorgängen aufzuzeichnen und zu erkennen, dass die Performance-Vorgänge am stärksten davon abhängen, die Videooberfläche auf den aktuellen Stand zu bringen und den Puffer von der Videooberfläche auf die Standardfensteroperation zu tauschen. Unten ist ihr Code
public void makeCurrent()
{
if (!EGL14.eglMakeCurrent(this.mEGLDisplay, this.mEGLSurface, this.mEGLSurface, this.mEGLContext))
throw new RuntimeException("eglMakeCurrent failed");
}
public boolean swapBuffers()
{
return EGL14.eglSwapBuffers(this.mEGLDisplay, this.mEGLSurface);
}
Die Ausführungszeit der aktuellen Operation beträgt 1 ~ 18 ms
Die Ausführungszeit der Swap-Puffer-Operation beträgt 4 bis 14 ms
Die Ausführungszeit für andere Operationen beträgt normalerweise 0 bis 1 ms
Wie kann die Leistung dieser Vorgänge verbessert werden?
Jede Hilfe wird sehr geschätzt!