![]() |
Performance problem Andorra2D
Hallo ich habe ein kleines performance problem wäre schön wenn mir jemand helfen könnte
Die Situation: ich habe alle texturen in einer Tadimagelist jedoch bevor ich diese zeichne möchte ich sie noch individuell je nach Situation verändern also lade ich sie vor dem zeichnen in ein TAdTextureSurface um hier ebend die änderungen (zb. via canvas oder andere bilder mit rauf zeichnen) vornehmen zu können, nach dem die änderungen vorgenommen wurden geht es per AdTextureSurface.image.draw(...) auf das eigentliche surface das funktioniert auch, nur ist das ganze zu langsam da es für ein Spiel benötigt wird. selbst ohne änderungen (dh. einfach nur ins TAdTextureSurface laden und danach ins Hauptsurface) fällt die Framerate in den Keller :( hier etwas quelltext zum besseren verständniss:
Delphi-Quellcode:
gibt es vielleicht eine andere möglichkeit das bild nach dem laden und vor dem zeichnen noch einmal zu verändern ?
adsur:TAdTextureSurface;
img1:TAdImage; .... img1:=imglist.Find('mypicture'); adsur.SetSize(img1.Width,img1.Height); img1.Draw(adsur,0,0,0); { . . änderungen hier z.b. adsur.Canvas.Circle(...); . } addraw.BeginScene; adsur.Image.Draw(addraw,100,100,0); addraw.endScene; addraw.flip; ... schonmal danke im vorraus Gruß Sportkeks |
AW: Performance problem Andorra2D
Die SetSize-Operation benötigt die längste Zeit und sollte nur nach dem Erstellen des Surfaces einmalig ausgeführt werden. Also vermeide den Aufruf von SetSize so oft wie nur möglich (z.B. setze die Größe nur neu, wenn sie sich wirklich verändert hat).
|
AW: Performance problem Andorra2D
ok danke ich habe jetzt alle texturen auf eine standart abmessung festgelegt und rufe setsize() nur nach dem erstellen auf
es ist zwar jetzt besser geworden allerdings zieht das ganze immer noch deutlich an den fps :? edit: Bin noch auf ein neues problem gestoßen wenn ich bilder mit AdTextureSurface.image.draw versuche zu zeichnen und antialising aktiviert habe werden diese bilder nicht angezeigt wenn ich antialising aus mache funktionierts :wall: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:01 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-2025 by Thomas Breitkreuz