![]() |
[Andorra 2D OGL] Image.Texture.Texture.SaveToBitmap bei geänderten Dimensionen
Hello :)
Ich habe hier ein TImageSprite. Dem wird zu Anfang ein Image mit 64x64 Größe zugewiesen. Zur Laufzeit ändert sich die Größe des Sprites je nach seinem Zustand auf 20x20 bzw. 48x48. Wenn ich nach der Änderung der Größe auf die "Textur" des Sprites per
Delphi-Quellcode:
zugreife, krachts mit einer Zugriffsverletzung beim Freigeben von Bmp1.
Image.Texture.Texture.SaveToBitmap(Bmp1);
Delphi-Quellcode:
Wenn ich das Sprite in seiner Ursprungsgröße belasse, also 64x64, läuft alles einwandfrei. Wenn ich die Größe des Sprites zur Laufzeit verkleinere (
var
Bmp1: TAdBitmap; W, H: Integer; begin W := Sprite.Width; // 48 H := Sprite.Height; // 48 Bmp1 := TAdBitmap.Create; try Bmp1.ReserveMemory(W, H); Image.Texture.Texture.SaveToBitmap(Bmp1); // ... finally Bmp1.Free; // << Zugriffsverletzung end; end;
Delphi-Quellcode:
), krachts bei Bmp1.Free, wenn vorher
Sprite.Width := 48;
Delphi-Quellcode:
aufgerufen wurde. Wenn ich das Bild vergrößere (80x80 zB) bzw. die Zeile auskommentiere, funktionierts wieder.
Image.Texture.Texture.SaveToBitmap(Bmp1)
SaveToBitmap wird in der DLL (OGLMain.pas) implementiert. Vorher ist es nur eine abstrakte virtuelle Funktion. Also lässt sich das blöd debuggen. Ich vermute aber, dass er an der Stelle wohl nicht das "geschrumpfte" Bild (48x48) in den Puffer packt, sondern das Bild mit der Originalgröße. Das zeigt sich auch daran, dass es funktioniert, wenn ich das Bild vergrößere, statt verkleinere, weil in dem Fall für Bmp1 mehr Speicher reserviert wird, als er braucht. Ist also scheinbar ein Bug in der Andorra-OGL-Schicht. Ist Igel überhaupt noch aktiv und wird Andorra noch gepflegt? :mrgreen: |
AW: [Andorra 2D OGL] Image.Texture.Texture.SaveToBitmap bei geänderten Dimensionen
Hallo,
dieser Thread ist zwar schon mehrere Monate alt und ich bin sichtlich überrascht zu sehen, dass noch irgendjemand Andorra 2D verwendet. Ich meine -- ich würde es nicht mehr verwenden. Ich war 15, 16 als ich das geschrieben habe. Kein Wunder, dass da Bugs drin sind ;-) Leider kann ich auch nicht direkt zur Lösung des Problems beitragen, abgesehen von der Tatsache, dass ich in den Textur-Lade/Speicher Funktionen des OGL-Plugins keine Bugs sehe (gerade die Partition auf der Festplatte entstaubt und nachgeschaut). Das müsste so schon funktionieren. Der von dir gezeigte Code weist darauf hin, das es eine Diskrepanz zwischen Sprite.Width und Sprite.Height gibt, sowie der Größe der Textur -- ich verstehe auch nicht ganz, warum das Ändern der Größe des Sprites auch die Größe der Textur ändern sollte (die ist schließlich statisch). Die folgende Frage kann ich dagegen sicher beantworten: Zitat:
Wird Andorra noch gepflegt: Nein. Ich müsste mir meine eigenen Tutorials anschauen, um das überhaupt wieder auf meinem Rechner zum Laufen zu kriegen. Viele Grüße, Andreas |
AW: [Andorra 2D OGL] Image.Texture.Texture.SaveToBitmap bei geänderten Dimensionen
Zitat:
Viel vergleichbares an 2D gibts auch nicht. Zitat:
Zitat:
Sorry das ich nichts zum Thema beitrag und den Thread störe, aber das musste ich jetzt los werden. Andorra ist besser als Andreas denkt und es würde mich freuen wenn er wieder in die Richtung was machen würde. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz