![]() |
DoubleBuffered -> CPU überlastet!?
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!
Ich mache zurzeit ein Wario-game, das ich unten angehängt hab! :lol: Ich habe nämlich ein Problem mit meinem DubbleBuffered. Wenn ich in die Nähe vieler "Gegner" komme, ist meine CPU vollkommen überlastet. Wenn ich aber DubbleBuffered ausschalte (was eigentlich nicht möchte) läuft alles reibungslos. Was kann ich tun?? Max |
Re: DoubleBuffered -> CPU überlastet!?
wie ist das spiel derzeit realsiert? hast du mehrere TImages die du verschiebst oder zeichnest du direkt auf die Canvas des formulares? wenn du direkt auf die canvas zeichnest könntest du doublebuffered auf false setzen weil es dann nciht mehr benötigt wird
|
Re: DoubleBuffered -> CPU überlastet!?
Nee, ich verschiebe mehrere TImages!
|
Re: DoubleBuffered -> CPU überlastet!?
anstelle des imageverschiebens mal lieber direkt auf die canvas vom formular. natürlich vorher den hintergrund sichern damit, wenn das object weiterrückt, der hintergrund wieder da ist
|
Re: DoubleBuffered -> CPU überlastet!?
hä? das hab ich nicht so ganz verstanden. also was soll ich deiner meinung nach machen?
|
Re: DoubleBuffered -> CPU überlastet!?
Zitat:
|
Re: DoubleBuffered -> CPU überlastet!?
@LoW_FloW: wenn du in der hilfe nach doublebufferd suchst wirst du ne erklärung finden die in etwa aussagt das wenn doublebuffered auf true gesetzt wird das flimmern reduziert wird aber gleichzeitig die cpu-last zunimmt weil halt das bild nicht direkt gemalt wird sondern im speicher gemalt wird und dan unterschiedlichen ebenen übereinander gelegt werden und das dann komplett auf die form gemalt wird...
Ich meinte das du anstelle der TImages das ganze direkt auf die Canvas vom formular malen sollst. Also:
Delphi-Quellcode:
und bevor du das ausführst sollst du die fläsche wo die Figur drauf gemalt wird sichern weil du ja wenn die figur weiterrückt du den hintergrund neu malen musst (weil die figur ja dann nicht mehr an der stelle ist)
draw(xpos,ypos, Spielfigurbild);
|
Re: DoubleBuffered -> CPU überlastet!?
:hi:
Die Hilfe (F1...) fühlt sich hintergangen und meint Hat DoubleBuffered den Wert False, wird das fensterorientierte Steuerelement direkt in das Fenster gezeichnet. Ist DoubleBuffered True, zeichnet sich das fensterorientierte Steuerelement in ein Speicher-Bitmap, das dann zum Zeichnen des Fensters verwendet wird. Durch die Doppelpufferung tritt weniger Flimmern beim Neuzeichnen des Steuerelements auf. Auf der anderen Seite wird jedoch mehr Speicher benötigt. mfg Tobias //Edit da war wer schneller. |
Re: DoubleBuffered -> CPU überlastet!?
Ich habe ja verschiedene Wandgrößen und somit auch verschiedene Bildergrößen und ich jedes Wand Image trotdem laden muss, damit ich dann in Delphi schreiben kann:
Delphi-Quellcode:
Kann man das vielleicht anders schreiben, oder gibt es noch ne bessere Lösung?
form1.canvas.draw(wand[0].left,wand[0].top,wand[0].picture.bitmap);
Max |
Re: DoubleBuffered -> CPU überlastet!?
Zitat:
Delphi-Quellcode:
oncreate:
var
backpuffer: TBitmap: Einheiten: array [0..12]: TBitmap:
Delphi-Quellcode:
timer mit kleinem INtervall:
backpuffer := TBitmap.create;
backpuffer.width := width; backpuffer.height := height; for i:=0 to heigh(Einheiten) begin Einheiten[i] := TBitmap.create; end; Einheiten[2].loadfromfile(XXXXXXXXXXXXXX); .....
Delphi-Quellcode:
//Zeichen Einheiten auf Backpuffer........
BitBlt(canvas.handle, 0, 0, backpuffer.Width, backpuffer.Height, backpuffer.Canvas.Handle, 0, 0, srccopy);//Backpuffer aufs Formular |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:10 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