Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi 8Bit Game Engine (https://www.delphipraxis.net/178494-8bit-game-engine.html)

Sir Rufo 11. Jan 2014 18:55

AW: 8Bit Game Engine
 
Sägst du dafür was von der CPU ab? :mrgreen:

milos 11. Jan 2014 19:15

AW: 8Bit Game Engine
 
Könnte man meinen, wenn man bedenkt das die NES mit 256x240 soweit ich weiss 50 FPS rendern konnte und die Engine es nicht mal mit 128x72 auf 30 schafft :D

jaenicke 11. Jan 2014 21:07

AW: 8Bit Game Engine
 
Die vielen Aufrufe von FillRect machen das ganze natürlich nicht gerade schnell.

Zudem müssen bei der gewählten Vorgehensweise jedes Mal beim Zeichnen die Zeichenobjekte neu erstellt werden. Ich würde hier eher die zweite Variante aus der Dokumentation wählen, das sollte schneller sein:
http://docwiki.embarcadero.com/RADSt...henfl%C3%A4che

Außerdem ist Antialiasing standardmäßig an, wird hier aber gar nicht benötigt. Das zu deaktivieren sollte das ganze mehr als doppelt so schnell machen, je nach Grafikkarte. Dafür reicht vor dem BeginDraw:
Delphi-Quellcode:
  Drawer.Canvas.RenderTarget.SetAntialiasMode(D2D1_ANTIALIAS_MODE_ALIASED);
...

milos 12. Jan 2014 00:59

AW: 8Bit Game Engine
 
Hi,

danke für die Antwort. Der Tipp mit dem Antialiasing hat die Perforamnce wirklich um fast das doppelte gesteigert :)

Meinst du mit der 2. Variante, den Bereich in "Exklusive Verwendung der Direct2D-Zeichenfläche"?
Weil mein Code funktioniert so wie der Code in der 2. Codebox in der Dokumentation.

MfG

Popov 12. Jan 2014 02:13

AW: 8Bit Game Engine
 
@milos

Ich hab früher für den C64 etliche Games programmiert. Wenn du ein Engine in der Richtung programmieren willst, dann mach es nicht zu gut. Laß es einfach sein. Auf der anderen Seite auch nicht zu einfach. Es hat keinen Grund die billigen Grafik von damals zu simulieren. Was aber - um mal bei dem C64 zu bleiben - der C64'er besonderes hatte, das waren Sprites. Das war der Unterschied. Man musste sich nicht einen abmühen und um Dublebuffer kümmern um paar Objekte auf dem Bildschirm zu bewegen, man hat dem Sprite ein Bild zugewiesen und musste ihn nur noch auf dem Bildschirm bewegen. Und wenn sich zwei berührten, gab es eine Info.

Mehr hatten die alten Kisten nicht drauf. Der Rest war das Können der Programmierer.

jaenicke 12. Jan 2014 07:11

AW: 8Bit Game Engine
 
Zitat:

Zitat von milos (Beitrag 1243229)
Meinst du mit der 2. Variante, den Bereich in "Exklusive Verwendung der Direct2D-Zeichenfläche"?
Weil mein Code funktioniert so wie der Code in der 2. Codebox in der Dokumentation.

Dann müsstest du den Code einmal zeigen, denn der oben angehängte erzeugt den TDirect2DCanvas im Paint jedes Mal neu. (Und das ist die erste Variante.)

milos 12. Jan 2014 09:28

AW: 8Bit Game Engine
 
@Popov: An Sprites habe ich auch schon gedacht, werde ich aber erst implementieren sobald sich die Performance (stark) verbessert hat. Bin mittlerweile bei ca 45FPS mit einer Auflösung von 128x72, was nicht gerade viel ist ^^

@jaenicke: Ahh du meintest wohl doch den 3. Codeteil. Habe es mal verucht so einzubauen, jedoch habe ich probleme funktionen wie WMPaint und WMSize von einem anderen Objekt aus meiner Form zuzuweisen. Geht das überhaupt, oder muss ich dies direkt in der Form klasse tun?

MfG

TiGü 13. Jan 2014 11:16

AW: 8Bit Game Engine
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von milos (Beitrag 1243241)
@jaenicke: Ahh du meintest wohl doch den 3. Codeteil. Habe es mal verucht so einzubauen, jedoch habe ich probleme funktionen wie WMPaint und WMSize von einem anderen Objekt aus meiner Form zuzuweisen. Geht das überhaupt, oder muss ich dies direkt in der Form klasse tun?

Ich habe mal mit deinen Code herumgespielt und ein bisschen refaktorisiert.
Eine Möglichkeit auf WMPaint und WMSize zu reagieren siehst du im Anhang.

milos 14. Jan 2014 00:46

AW: 8Bit Game Engine
 
Cool, vielen dank :)

Hat mir nun das Prinzip der 2. Methode erklärt :D

Edit: Wie ich sehe, hast du die Qualität des Codes auch noch verbessert. Vielen dank dafür ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:12 Uhr.
Seite 2 von 2     12   

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