AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi [Andorra 2D OGL] Image.Texture.Texture.SaveToBitmap bei geänderten Dimensionen
Thema durchsuchen
Ansicht
Themen-Optionen

[Andorra 2D OGL] Image.Texture.Texture.SaveToBitmap bei geänderten Dimensionen

Ein Thema von nuclearping · begonnen am 13. Feb 2014 · letzter Beitrag vom 8. Jul 2014
 
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

[Andorra 2D OGL] Image.Texture.Texture.SaveToBitmap bei geänderten Dimensionen

  Alt 13. Feb 2014, 16:35
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 Image.Texture.Texture.SaveToBitmap(Bmp1); zugreife, krachts mit einer Zugriffsverletzung beim Freigeben von Bmp1.

Delphi-Quellcode:
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;
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 (Sprite.Width := 48; ), krachts bei Bmp1.Free, wenn vorher Image.Texture.Texture.SaveToBitmap(Bmp1) aufgerufen wurde. Wenn ich das Bild vergrößere (80x80 zB) bzw. die Zeile auskommentiere, funktionierts wieder.

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?
  Mit Zitat antworten Zitat
 


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 10:14 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