Entwickler-Ecke

Multimedia / Grafik - Grafik zu langsam! gibt es noch eine schnellere Methode?


kampfkoloss23 - So 29.12.02 17:26
Titel: Grafik zu langsam! gibt es noch eine schnellere Methode?
Ich hab ein kleines Spiel programmiert, bei dem man sich mit dem Rechner ein Gefecht mit kleinen Raumschiffen liefert.

Dabei wird 50 mal pro sec (timer interval auf 20 ) alles errechnet und einzeln so ca 20 kleine Bitmaps und bis zu 200 einzelne Pixel auf den
Bildschirm gesetzt.

Ich hab nen 450 mhz Rechner und dass läuft gerade noch flüssig.
Gibt es eine bessere Methode?

Ist vielleicht eine Imagelist schneller??

In der eigenen Delphi Hilfe wird selbst gesagt, dass dies keine gute Methode ist, um den Bildschirm auszufüllen.

so ist der Aufruf des Bitmap gemacht gemacht:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Bitmap1 := TBitmap.Create;
  try
    Bitmap1.LoadFromFile('Mine.bmp');
    image1.Canvas.Brush.Bitmap := Bitmap1;
    image1.canvas.draw(round(Mine[it].x),round(Mine[it].y),Bitmap1);
  finally
    image1.Canvas.Brush.Bitmap := nil;
    Bitmap1.Free;
  end;


(30.12. 10:36 Tino) Code-Tags hinzugefügt.


Jack Falworth - Mo 30.12.02 01:56

Du solltest vielleicht nicht unbedingt 50 mal in der Sekunde ein Bitmap kreieren und das Minenbild von der Datei laden. Einmal genügt eigentlich. Das dürfte schon mal einiges an Rechenleistung sparen.

MfG

Jack Falworth


M. Raab - Mo 30.12.02 14:25

Hallo Jack,

eine Methode um das zu verbessern ist:

Normalerweise sollte ein einmaliges Laden reichen. Wennes aber auf Grund Deines Programms nicht möglich ist, lade Dein Bild 1x in eine Variabel, z.B. BITMAP2 und kopiere es dann in BITMAP1.

Ein anderer Tipp ist die DOUBLEBUFFERED Eigenschaft Deines Forms. Damit passiert der Aufbau im Hintergrund und wird dann rüber kopiert.

Gruß


Markus


Anonymous - Mo 30.12.02 15:50

Zum Thema Laden und Speicher. Sowas kann je System zwischen 100 und 200 ms dauern.


kampfkoloss23 - Mo 30.12.02 18:12

danke :lol: :lol:
probiers gleich aus


kampfkoloss23 - Mo 30.12.02 18:53

braucht man eigentlich das try und finally?
Für was sollen die denn hier gut sein?


Jack Falworth - Mo 30.12.02 21:25

Try steht da, falls das Laden der Datei schief geht (z.B. wenn die datei gelöscht wurde), damit es keine Fehlermeldung gibt.

Wenn du noch eine try - except anweisung einbaust kannst du die Delphi Fehlermeldung abfangen und beispielsweise deine eigene Fehlermeldung einbauen.

MfG

Jack Falworth