Führen Sie Android OpenGL im Hintergrund als Rendering Resource für App?

Ich möchte eine Android OpenGL-ES-Oberfläche im Hintergrund meiner App ausführen, um dynamische grafische Ressourcen (Bitmaps etc.) für die Anwendung bereitzustellen. Das OpenGl GLSurfaceView ist nicht der sichtbare Bildschirm meiner App. Es wird nur als Rendering-Fabrik verwendet, um Grafiken für die Verwendung durch die Hauptaktivität herzustellen.

Wer weiß, wie man ein Android GLSurfaceView laufen, wenn es keine aktive Ansicht ist? Die Google Android-Dokumentation ist klar, dass, wenn ein GLSurfaceView seinen Status als primäre Ansicht verliert, die Oberfläche zusammen mit all seinen Ressourcen zerstört wird.

Gibt es eine Möglichkeit, ein GLSurfaceView und den damit verbundenen GLSurfaceView.Renderer normal zu halten, wenn es nicht (und ist es noch) die primäre Ansicht der Anwendung?

  • Beste Weg, um Game-Loop für Android mit OpengGLSurface zu machen
  • OpenGL für Android und iPhone
  • Android glatte Spielschleife
  • 2D Beispiel mit OpenGL
  • Schlechte Leistung von Android Canvas.drawBitmap - Umschalten auf OpenGL?
  • Getting Linien von GL10 Zeichnung Bilder neben einander, Lösung?
  • So erstellen Sie Update / Draw Loop passend mit android opengl?
  • DrawerLayout ListView nicht mit GLSurfaceView als Inhalt gezeichnet
  • 2 Solutions collect form web for “Führen Sie Android OpenGL im Hintergrund als Rendering Resource für App?”

    Für was du versuchst zu tun, solltest du die GLSurfaceView ganz überspringen. Da du nur ein OpenGL-Offscreen-Rendering machen willst, kannst du einen EGL-Pixelpuffer nutzen und ihn in eine Bitmap umwandeln. Sehen Sie diesen Thread auf unddev für eine Lösung. Ich habe es sehr erfolgreich in einigen meiner Apps benutzt.

    Die Umsetzung in Richtung der Unterseite dieses Threads ist ein bisschen buggy, da es einige sehr einfache EGL Wahl hat. Ich würde empfehlen, einen robusteren Wähler zu implementieren, den Sie im Robert Green GLWallpaperService finden können , wenn Sie möchten .

    Eine weitere Änderung, die ich am Ende machte, war, die vertikale Pixelspiegelung zu entfernen. Ich habe gerade oben geschlagen mein Viewport in onSurfaceCreate, anstatt manuell Flip gerenderten Pixel beim Schreiben in die Bitmap.

    Viel Glück!

    Ich würde Ihnen dringend empfehlen, das nicht zu versuchen. Viele aktuelle Treiber auf Android-Geräten unterstützen nicht mehrere aktive GL-Kontexte über Prozesse hinweg. Wenn der Fahrer dies unterstützt, wurde das Feature nicht viel ausgeübt, weil Android selbst das nicht tut, also gibt es wahrscheinlich böse Bugs, die sich ergeben.

    Mehrere GL-Kontext wird nur von der Plattform verwendet, die mit Android 3.0 beginnt.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.