Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Jul 10, 2025 20:45

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Lebenszyklen
BeitragVerfasst: Mo Okt 27, 2003 20:52 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 29, 2002 10:37
Beiträge: 251
Wohnort: Ulm
hi,

ich hätt mal gern von euch gewusst, wie ihr folgendes regelt (ist eigentlich unabhängig von OpenGL):

ihr habt ein Objekt, das kann man erstellen wann man will. das objekt soll nun 30 sekunden lang "leben". gut. wie realisiert ihr nun, dass das objekt nach 30 sekunden "stirbt" oder besser gesagt wie macht man das sinnvoller weise? ich hatte zwei möglichkeiten überlegt:

1. ich hab ja nachher eine OpenGL renderschleife (wenn nicht, mach ich einfach ne endlosschleife bis irgendein ereignis eintritt, z.B. ESC gedrückt) und übergeb einfach über eine prozedur z.B. meinobjekt.update die "weltzeit" (die weltzeit startet beim ersten durchlauf der schleife und zählt dann in millisekunden). das objekt gleicht die zeit mit seiner lebensdauer und startzeit (der erschaffungs prozedur wird die weltzeit der erschaffung übergeben) ab und entscheidet dann, ob es tot ist oder nicht.

2. das objekt bekommt irgendwie eine endlosschleife, die regelmäßig die zeit abruft seit seiner erschaffung (z.B. mit gettickcount) und dann entscheidet ob es tot ist oder nicht.

welche methode ist die sinnvollere?? gibt es eine andere? eine bessere?

gruß
rochus

_________________
http://www.rochus.net


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 27, 2003 21:33 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Ich würde die 1.Methode nehmen, weil die Zeit zentral verwaltet wird. Eigentlich sollte nur ein Aufruf zu gettickcount bzw. queryperformancecounter stattfinden. Das ist einfacher nacher zu ändern und alle Objekte laufen automatisch syncron, als wenn jedes Objekt seine eigene Weltzeit hat. Wenn die Objekte alle die gleiche Zeit lang leben, dann würde ich die Objekte in einer TQueue speichern und nur das jeweils älteste Objekt seine Lebensdauer überprüfen lassen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 27, 2003 22:18 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 29, 2002 10:37
Beiträge: 251
Wohnort: Ulm
naja, so wie ich mir meine überlegungen bisher gemacht habe wird die lebensdauer willkürlich sein (bzw. je nach einsatzgebiet). ich tendierte auch schon zu beginn zu erster methode, war mir aber nicht sicher ob es noch andere/bessere methoden gibt.

danke für deine antwort

gruß
rochus

_________________
http://www.rochus.net


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Okt 28, 2003 11:29 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ich finde auch, dass der Weg über eine Queue die sinnvollste Lösung dafür ist.
Für den Fall, dass du mehrere Objekte haben wirst. (500 - 1000) ala Partikel System.
Da würde sich für die Queue eine einfach oder doppelt verketete Liste anbieten. Da du diese einfacher umstrukturieren kannst. Eine TList würde zwar auch gehen aber wenn du regelmäßig die ersten Einträge löschst dann muss der gesamte Rest nach oben geschoben werden und in der Summe ist das, gar nicht mal wenig, "vergeudete" Zeit.

PS: Wenn die Lebenszeit deiner Objekte chronologisch wäre, dann könntest du dich von zeitlichen Ende zum zeitlichen Anfang durchwühlen und könntest dann stoppen sobald du das erste lebende gefunden hast. Somit könntest du dir wieder einiges an arbeit sparen. Aber aufgrund der unterschiedlichen Lebensdauern würde das einbauen in die Queue wahrscheinlich länger dauern als einmal komplett über sie hinüber zu huschen.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 16 Queries | GZIP : On ]