AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bitmap-Performance

Ein Thema von Union · begonnen am 6. Nov 2013 · letzter Beitrag vom 6. Nov 2013
Antwort Antwort
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#1

Bitmap-Performance

  Alt 6. Nov 2013, 13:33
Ich habe festgestellt, dass die Zuweisung von Bitmaps mit einem OpenGL-Canvas unter iOS auf einem physikalischen Gerät extrem lange dauert - bis zu 5 s. Ausserdem bleiben Bitmaps mit Dimensionen > 2048*2048 (iPhone) bzw. 4096x4096 (iPad) leer.

Also habe ich Software-Rendering eingeschaltet. Und siehe da, es ward Licht und 30x schneller als mit OpenGL. Ich war schon soweit dass ich meine App updaten wollte, da habe ich das IPhone mal gedreht: Absturz.

Ich habe jetzt also zwei Möglichkeiten:
  1. Ich lasse die app wie sie ist. Lahm und reaktionsträge. Aber sie stürzt nicht ab.
  2. Ich nehme die beschleuinigte Version und riskiere Abstürze oder verbiete die Drehung.
Zu was würdet Ihr mir raten?
(Option 3: Warten auf QC-Behebung ist unrealistisch)
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#2

AW: Bitmap-Performance

  Alt 6. Nov 2013, 14:46
Zur Texturengröße:
Du solltest vorher ermitteln, welche maximale Texturengröße das jeweilige Device überhaupt unterstützt.

Das geht z.B. mit:
Code:
 glGetIntegerv(GL_MAX_TEXTURE_SIZE, &txSize);
Texturen über 2048x2048 sind aber generell für jedes mobile Gerät schon "mächtig" groß, vor ein paar Jahren war das sogar auf PCs noch das Maximum für die meisten Grafikkarten
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Bitmap-Performance

  Alt 6. Nov 2013, 15:14
Das macht das Framework. Beim Initialisieren werden die Metrics des Kontextes u.a. mit diesen Werten gefüllt. Es sollte dann eine "Zwangsverkleinerung" stattfinden (in UIImageToBitmap) wenn eine Überschreitung ermittelt wird. Leider funktioniert das nicht, daher ist das Bitmap dann mit Nullen gefüllt.

Beim Verwenden von FMX ohne OpenGL läuft alles viel flüssiger. Nur dass einige Operationen fehlschlagen, weil wohl nicht überall abgefragt wird wie gerendert werden soll. So werden dann OpenGL-Stukturen beim Software-Rendering angesprochen, die natürlich nicht initialisiert sind.

Hauptengpass bei der OpenGL-Performance in FMX ist die Verwendung von glReadPixels. Somit läuft alles über die CPU und den Hauptspeicher. Und die Bitmaps sind horizontal gespiegelt und müssen zur Verwendung erst zeilenweise umgedreht werden. Jeder Lese-Zugriff auf ein Bitmap erfordert ein entsprechendes Mapping das diese Operationen durchführt.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz