AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Delphi Programm zu Speicherlastig? (läuft sehr langsam)

Delphi Programm zu Speicherlastig? (läuft sehr langsam)

Ein Thema von Phill · begonnen am 18. Dez 2008 · letzter Beitrag vom 20. Dez 2008
Antwort Antwort
Seite 2 von 3     12 3   
Berlinermauer

Registriert seit: 3. Okt 2007
Ort: 0x0000
213 Beiträge
 
Delphi 7 Personal
 
#11

Re: Delphi Programm zu Speicherlastig? (läuft sehr langsam)

  Alt 18. Dez 2008, 21:36
Also ein Pointer den brauchse beim Dateienauslesen xD

Bilder wie du sie hast sind PixelGrafiken, also ist jeder Pixel gespeichert, jedoch kann man das runtterrechnen und so nur die minimale anzahl benötigen, zb mit gif, das is viel kleiner aber quali schlechter, das meinte SirHenry, wir müssen wisssen wie du das spiel "Machst" mit Andorra oder wie oder was.

Wenn deine Objekte nicht komplex sein Sollen kannst du Auch VektorBilder benutzen, das heißt zb "zeichne nen kreis mit radius x, statt einfach die pixel anzugeben"


Wenn du Googlest findest sicher was.

Edit: ohja images bewegen, dann läd er es immer neu.

Nutze doch ne Engine wie "Andorra 2D", die schon alles macht
Marc S.
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#12

Re: Delphi Programm zu Speicherlastig? (läuft sehr langsam)

  Alt 18. Dez 2008, 21:37
LoadFromFile ist natürlich (für diese Anforderungen) nicht gerade schnell - obwohl das Bild dann wohl meist aus dem Plattencache kommt. Aber besser wäre es, wie Sir Thornberry schon sagte, den Source mal einsehen zu können.
Ralph
  Mit Zitat antworten Zitat
Phill

Registriert seit: 18. Dez 2008
11 Beiträge
 
#13

Re: Delphi Programm zu Speicherlastig? (läuft sehr langsam)

  Alt 18. Dez 2008, 21:44
"Den Source mal einsehen zu können" das übersetze ich mal mit "lad die .pas hoch" und habs prompt gemacht (siehe Anhang).

Kann sein dass ich das falsch verstanden hab (kA ob sich einer durch meinen quellcode wurschteln will (vorallem weil die levelup-procedure noch umständlig lang ist) )
Angehängte Dateien
Dateityp: txt unit1.pas_306.txt (23,5 KB, 17x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#14

Re: Delphi Programm zu Speicherlastig? (läuft sehr langsam)

  Alt 18. Dez 2008, 21:45
Wenn du mit TImages arbeitest und von 20 Objecten die Position änderst wird 20 mal neu gezeichnet (bei jedem Ändern einer Position eines TImage) was natürlich einiges an Zeit kostet.
Effektiver ist es wenn erst alle Positionen geändert werden und erst dann einmal neu gezeichnet wird.
Mit TImages geht das jedoch wohl nicht. (entweder nimmst du eine fertige Engine oder zeichnest selbst erst alles auf ein TBitmap und zeichnest dieses dann auf die Form)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#15

Re: Delphi Programm zu Speicherlastig? (läuft sehr langsam)

  Alt 18. Dez 2008, 22:19
Auch von mir nochmal Herzlichwillkommen in der DP

Sicher ist, dass du auf jedenfall eine Grafik Engine brauchst! Ich ken neine ganz gute für Anfänger, ist sehr leicht zu erlernen, und für Anfänger bestenz geeignet:

Klickst du hier

das ist die HGE Delphi Engine, schau dir das bsp Programm von Ihr an, damit kannst du alles schnell und unkompliziert zeichnen, wie Animationseffekte und Partikels usw...


Solltest du nicht auf sowas zugreifen wollen, versuche mit Threads deine Bilder zu bewegen! Das bringt vllt nen bissel Geschwindigkeit, wird aber an ne Engine nicht ran kommen!

mfg
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Phill

Registriert seit: 18. Dez 2008
11 Beiträge
 
#16

Re: Delphi Programm zu Speicherlastig? (läuft sehr langsam)

  Alt 19. Dez 2008, 00:56
Wow also, ich hab mir die Beispiele angeguckt und, wow das ist was ich brauche aber.. wenn ich mir den quelltext so ansehe..

hge->System_Start();

das ist kein delphi oder?
  Mit Zitat antworten Zitat
Benutzerbild von Michael Habbe
Michael Habbe

Registriert seit: 10. Aug 2005
264 Beiträge
 
Turbo Delphi für Win32
 
#17

Re: Delphi Programm zu Speicherlastig? (läuft sehr langsam)

  Alt 19. Dez 2008, 02:09
Bei dem LoadFromFile und so ist mir spontan eingefallen, dass es nicht gut ist, diese Dinge sofort auf dem Bildschirm ausführen zu lassen. Das Kopieren der Bitmaps aus dem Speicher auf den Bildschirm braucht Zeit, zumindest unter der Verwendung der Standardroutinen.
Besser wäre es, Deine ganzen Grafikroutinen zuerst im Hintergrund im Speicher zu tätigen, also auf einem Bitmap was nicht auf den Bildschirm ausgibt. Erst wenn alle Routinen abgearbeitet sind, Deine Ausgabe auf das Form "kopieren".

Habe gerade keine Quelldatei zur Verfügung, um ein Beispiel zu bringen, vielleicht findet sich jemand, der was passendes hat. (Oder mich korrigiert, wenn ich falsch liege)
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#18

Re: Delphi Programm zu Speicherlastig? (läuft sehr langsam)

  Alt 19. Dez 2008, 07:39
Passt schon so Michael Habbe.

- du hast 2 Bitmaps(A, B)
- du machst dir eine Klasse, die als Eigenschaften Position(x und y) und eine Referenz zu einem Objekt hat
- für jedes sichtbare Element legts du dir ein Objekt dieser Klasse an
- du hast eine Liste in der genau die Objekte aus dieser Klasse abgespeichert werden
- du berechnest die Positionsänderungen und trägst die neuen Werte in die Objekte aus der Liste ein
- alle grafischen Objekte zeichnest du dir auf eins der beiden Bitmaps (zB. A) und weisst sie nach Ende der Zeichnung dem Anzeigebereich zu

- Berechnung der neuen Positionen und auf Bitmap B zeichnen
- ab jetzt immer im Wechsel mal auf Bitmap A und dann wieder auf B zeichnen

oder du bemühst eine Grafikengine, die es für dich erledigt


Mach es erst mal mit Boardmitteln, man lernt damit auch dazu.
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Phill

Registriert seit: 18. Dez 2008
11 Beiträge
 
#19

Re: Delphi Programm zu Speicherlastig? (läuft sehr langsam)

  Alt 19. Dez 2008, 12:25
Ich glaube ich versteh was ihr meint, aber ich dachte die funktion
DoubleBuffered := True
würde mir die Arbeit mit den 2Bitmaps abnehmen.

Zur Grafik-Engine: habe mir das zip der HGE-Engine heruntergeladen aber werde nicht so recht schlau aus derem inhalt, glaube das ist ne ganz andere Programmiersprache, kann das sein?
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#20

Re: Delphi Programm zu Speicherlastig? (läuft sehr langsam)

  Alt 19. Dez 2008, 12:37
Zitat von Phill:
hge->System_Start();
ist C/C++ also kein Delphi

Ich würde es so machen, dass alle Bilder als Bitmaps im Speicher gehalten werden und zusätzlich zu jedem Bitmap gespeichert wird, ob es sicht bar ist und an welcher Position.

Dann kannst du ein großes Bitmap erzeugen und immer in einer Schleife durchgehen und folgende Schritte ausfüheren:

1. Großes Bitmap leeren

2. Alle kleinen Bilder an ihre Position kopieren (Hier im Forum suchenBitBlt)

3. Das große Bild ausgeben (ebenfalls mit Bitblt)

4. Von vorne anfangen

BitBlt ist eine Funktion, die schnell ein Bitmap in ein anderes kopiert
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07: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