Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi DelphiX = CPU-Killer??? (https://www.delphipraxis.net/9484-delphix-%3D-cpu-killer.html)

fkerber 27. Sep 2003 13:43


DelphiX = CPU-Killer???
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi!
Ich habe folgendes Problem:

Ich hab eine Fläche von 950x570 Pixel und einen Ball der Größe 38x38! Dieser soll über diese Fläche bewegt werden. Das geht auch problemlos! Mit nur einem nachteil. Der Ball "geht" äuerst ruckartig und CPU-Auslastung = 100 %.
Das kann doch nicht sein, oder?
Am Rechner liegst nicht, der iss realtiv neu!

Wo liegt das Prob?
Source lege ich mal bei!

ciao und danke schonmal

fkerber

axelf98 27. Sep 2003 13:51

Re: DelphiX = CPU-Killer???
 
Hmm,
wird ->
DxDraw1.Surface.LoadFromFile('C:\dokumente und einstellungen\test\desktop\bild1.bmp');
in jedem Timereregnis aufgerufen? Wenn ja, muss Das Programm doch immer wieder auf die Platte zugreifen...
Ich kann das bei mir leider nicht testen, weil ich die Komponenten nicht habe.

Luckie 27. Sep 2003 13:52

Re: DelphiX = CPU-Killer???
 
Timer Intervall?

fkerber 27. Sep 2003 14:00

Re: DelphiX = CPU-Killer???
 
Hi!

@axelf98:
Ja, das wird immer wieder geladen, das könnte ein Grund sein, allerdings folgt dann meine Frage, wie ich das anders machen könnte, weil ich den Hintergrund ja immer "reseten" muss, damit man nicht sozusagen die Ball-Spur sieht!

@luckie:
Beim geposteten Code 1, aber auch bei 100 oder selbst bei 1000 ruckelts!

ciao fkerber

Luckie 27. Sep 2003 14:02

Re: DelphiX = CPU-Killer???
 
Nun ja, bei 1000 auch kein Wunder, das ist eine Sekunde.

fkerber 27. Sep 2003 14:07

Re: DelphiX = CPU-Killer???
 
Hi!

Das ist schon klar, ich meine auch kein Ruckeln im Sinne von Ballsprüngen oder so, sondern mehr so ne Art Verzögerung.
Bei Intervall=1 merkt man das bei mir ganz doll. Man merkt dann, dass es keine flüssige Bewegung ist!

ciao fkerber

axelf98 27. Sep 2003 14:09

Re: DelphiX = CPU-Killer???
 
Hmm, ich kenn jetzt deine Komponeten nicht, aber gibt es nicht einen refresh oder repaint Befehl?

anku 27. Sep 2003 14:53

Re: DelphiX = CPU-Killer???
 
Eigentlich sollte der Ball keine Spur ziehen. Die Graka setzt das Bild ja jedesmal neu zusammen. Du brauchst die Texturen also nur einmal laden.

fkerber 27. Sep 2003 15:17

Re: DelphiX = CPU-Killer???
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi!

@anku:
Siehe Attachment: Ohne den Neuladen-Befehl bei jedem Timer-Event zieht der Ball ne ganz schöne Spur!

Ich benutze DelphiX für Delphi6 Personal!

ciao fkerber

Christian Seehase 27. Sep 2003 15:23

Re: DelphiX = CPU-Killer???
 
Moin fkerber,

ich kenn' mich jetzt mit DirectX nicht so sonderlich aus, deshalb kann meine Idee auch völlig daneben sein:

So wie Dein Screenshot aussieht habe ich die Vermutung, dass Du vor dem Neuzeichnen des Balles das Bild des vorherigen erst einal entfernen und den Hintergrund restaurieren musst.

Gregor 27. Sep 2003 15:24

Re: DelphiX = CPU-Killer???
 
ich kenne mich gar nciht in delphix aus, aber könnte man nicht jedes mal zuerst den ball sozusagen löschen oder unsichtbar machen und auf die neue stelle legen und dann wieder sichbar?

fkerber 27. Sep 2003 15:38

Re: DelphiX = CPU-Killer???
 
Hi!

@Christian:
Das mache ich ja auch normalerweise, indem ich das Hintergrundbild bei jedem Schleifen-Durchlauf neu lade! Ich hab den Screenshot nur ohne das gemacht, weil anku meinte, dass das nicht nötig wäre!

@gregor:
Das wäre eine möglichkeit, wenn ich wüsste wie! Ich glaub der ball wird direkt auf den Untergrund gezeichnet, also muss ich den immer wieder erneuern!

Allgemein:
Ich glaube aber, dass es gar nicht am Neuladen des Hintergrunds liegt!
Auch wenn ich das Rauslasse, also nur Ball auf schwarzem Untergrund, hab ich ne CPU-Auslastung > 90% nur durch mein Prog!

Ich weiß echt keine Lösung!

Ciao fkerber

Luckie 27. Sep 2003 15:40

Re: DelphiX = CPU-Killer???
 
Bist du sicher, dass du den Sprite-Engine richtig benutzt?

fkerber 27. Sep 2003 15:44

Re: DelphiX = CPU-Killer???
 
Hi!

Zitat:

Zitat von Luckie
Bist du sicher, dass du den Sprite-Engine richtig benutzt?

Was heißt denn richtig benutzen, was kann man denn da einstellen oder falsch machen.
Ich bin mit DelphiX echt noch Neuling und deshalb komplett ratlos!

Delphi-Quellcode:
DXSpriteEngine1.Move(1);
DXSpriteEngine1.Draw(); // Draw the sprites onto the back buffer
Das ist alles was ich mit der Spriteengine mache!
Die move-Funktion ist ja oben in dem Anhang drin!

ciao fkerber

anku 27. Sep 2003 15:45

Re: DelphiX = CPU-Killer???
 
ich hatte vor 2 jahren mal ein snake-artiges prog erstellt. da sah die timerschleife so aus:
Delphi-Quellcode:
 DXDraw.Surface.Fill(1);
 DXSpriteEngine1.Move(1);
 DXInput1.Update;
 DXSpriteEngine1.Dead;
 DXSpriteEngine1.Draw;
 DXDraw.Flip;

fkerber 27. Sep 2003 15:49

Re: DelphiX = CPU-Killer???
 
Hi!

@anku:
Dann zieht der Ball zwar keine Spur mehr, aber das liegt ja daran, dass die Oberfläche immer schwarz gemacht wird bei jedem Durchlauf! Somit ist mein Hintergund auch weg!
Und selbst dann fliegt der Ball nicht gleichmäßig, sondern verzögert mittendrin manchmal!

ciao fkerber

anku 27. Sep 2003 16:00

Re: DelphiX = CPU-Killer???
 
Dann schmeiss mal das
Code:
DXDraw.Surface.Fill(1);
raus.

fkerber 27. Sep 2003 16:05

Re: DelphiX = CPU-Killer???
 
Hi!

Tja auch die "Snake-Schleife" nützt nix!
Immer noch "Ballspur" und Verzögerung!

ciao fkerber

anku 27. Sep 2003 16:15

Re: DelphiX = CPU-Killer???
 
dann benutz für den hintergrund doch ein "TBackGroundSprite".
das fill muss doch bleiben ;)

fkerber 27. Sep 2003 16:23

Re: DelphiX = CPU-Killer???
 
Hi!

Und wo finde ich das TBackgroundSprite?
Ist das ne zusätzliche Komponente?

ciao fkerber

anku 27. Sep 2003 16:38

Re: DelphiX = CPU-Killer???
 
Delphi-Quellcode:
var Back: TBackGroundSprite;
     
     Back := TBack.Create(DXSpriteEngine1.Engine);
     Back.Image := DXImageList.Items.Find('Background');
     back.Height:=480;
     back.Width:=640;
     Back.Z := -2;
     Back.Tile := True;
Ich hab die DelphiX Komponente nicht mehr drauf, kann dir also nicht sagen in welcher Unit die Klasse TBackGroundSprite sich befindet. Müsstest du also mal ein bisschen suchen. Ich glaub aber die is in der Sprite Unit mit drin. Du kannst dir ja mal die Beispiele angucken, die waren eigentlich recht leicht verständlich.

fkerber 27. Sep 2003 16:48

Re: DelphiX = CPU-Killer???
 
Hi!

Danke erstmal!
Wo schreib ich das hin, wie wird das aufgerufen? ich hab keine Beispiel zu DelphiX, sorry!

ciao fkerber

CrashMan 27. Sep 2003 21:11

Re: DelphiX = CPU-Killer???
 
Wie wärs wenn du die Datei nicht jedes mal von der Festplatte ziehst sondern in einer ImageList oderso speicherst....einmal von der Platte gelesen und dann immer aus der Imagelist....gehtwesentlich besser !!!

CrashMan

fkerber 28. Sep 2003 11:44

Re: DelphiX = CPU-Killer???
 
Hi!

Auch aus ner Image-List ist es so ram-fressend!

Ciao fkerber


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:44 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