Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi DelphiX: Teilweise neuzeichnen (https://www.delphipraxis.net/12196-delphix-teilweise-neuzeichnen.html)

Florian H 22. Nov 2003 17:52


DelphiX: Teilweise neuzeichnen
 
Hi,

ich muss bei einem Spiel, welches ich gerade mache in DelphiX einen großen Teil (ca. 75%) des Bildes fast nie neu zeichnen.
Diese 75% bestehen zudem auch noch aus sehr vielen kleinen Quadraten, also überdurchschnittlich viel Aufwand für den Rechner...

Die 25% die dauernd neu gezeichnet werden sollen sind eigentlich der harmlose Teil.
Trotzdem zeichne ich bisher alles bei jedem Frame neu --> Framerate zu niedrig

Wie kann ich es jetzt anstellen, dass ich das optimiert bekomme?
Kann ich sowas wie 2 Ebenen machen?, wovon nur die 2. immer verändert wird, die 1 nur einmal gezeichnet werden muss??

Oder bringt es was wenn ich die 75% auf ein TImage oder so zeichne und das dann immer direkt an DelphiX übergebe, sodass nur 1 mal die kleinen Sachen gezeichnet werden und dann jedesmal halt alles zusammen?


Viele Grüße
Florian H

Langohr 22. Nov 2003 18:29

Re: DelphiX: Teilweise neuzeichnen
 
Ich habe zwar nicht viel Ahnung von DelphiX, aber weshalb nimmst du nur eine DXDraw- Oberfläche.

Nimm mehrere, dann hast du auch eine bessere Kontrolle.

Florian H 22. Nov 2003 18:57

Re: DelphiX: Teilweise neuzeichnen
 
geht denn das?
das wusste ich noch gar nicht *ausprobier*

[edit]wie soll das gehen?
Wenn ich einfach ein neues erstlle und drüberlege, seh ich nur das, was auf dem 2. gezeichnet wird (logisch irgendwie...)

Seniman 22. Nov 2003 20:57

Re: DelphiX: Teilweise neuzeichnen
 
Hallo,

ich weiß auch nicht genau, wie es mit DelphiX funktioniert, aber die Idee dabei ist folgende:
Zeichne den Teil, der sich seltener ändert auf die hintere (unsichtbare) DxDraw-Fläche. Es gibt dann bestimmt einen Befehl, mit dem man das Bild von der einen DxDraw-Fläche in die andere kopieren kann.
In dem Timer lässt du dann einfach von der hinteren in die vordere Grafikoberfläche kopieren und malst dann die restlichen Grafiken (also die, die sich laufend ändern) darüber. Die hintere Grafikoberfläche lässt du nur neu zeichnen, wenn sie sich verändert. Dafür brauchst du dann vermutlich mehrere SpriteEngines.
Ich hoffe ich habe die Idee einigermaßen klar ausgedrückt.

Grüße
Seniman

Florian H 22. Nov 2003 21:14

Re: DelphiX: Teilweise neuzeichnen
 
Ja, kapiert habe ich es.
Nur die Umsetzung hapert :)

Ich hab schon geguckt, ob es sowas gibt, aber meine Kenntnisse sind diesbzgl. nicht so gut, zumal es ja keine allzugute Dokumentation dazu gibt...

Ich arbeite übrigens ohne Spriteengine, zeichne mit "dxImageList1.draw"... direkt auf die Fläche.


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