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.