
Aber wer so etwas in seinem Spiel drin hat, der wird dafür so oder so dann eine Lösung finden müssen, egal welche GameLoop er verwendet

Bescheid.ZeHa hat geschrieben:Das ist aber was völlig anderes - sag mir Bescheid falls ich mich irre, aber meinst Du nicht einfach nur die Parallelisierung der Grafik-Prozessoren?
Kollision war nur ein Beispiel. Aber ja, man muss immer überlegen wie man es aufteilen kann. Ich mache es so das der Mainthread Jobs an die anderen Threads verteilt, diese haben also keinen Zugriff auf solche Listen, sondern bekommen nur die Daten, die sie brauchen. Und liefern das Ergebnis beim Mainthread ab, der die Einzeljobs dann wieder zu einem Ergebnis zusammenführt.STARGÅTE hat geschrieben:Das heißt, man könnte bei 5 Objekten (10 Paarungen) jeweils 5 Paarungen auf beide Kerne verteilen.
Diese müssten dann nur bei einer Kollision in eine gemeinsamme Liste schreiben welche Paarung eine Kollision erzeugt.
Problem ist aber, wie verteile ich die Paarungen, schließlich können nicht beide Theads gleichzeitig die Liste der Obejkte durchgehen. Und für je ein Paar ein Thread zu öffnen ist vermutlich eh noch langsammer oder ?
Das heißt, dort müsste man erst zwei Listen anlegen für beide Threads in denne dann die jeweiligen Paarungen vordefiniert werden.
In den Threads wird dann nur noch auf Kollision überprüft.
Werde das mal näher austesten...
Code: Alles auswählen
Vereinfachtes Programmschema:
StartThread:
Do:
Do:
Daten in Buffer Ready?
Loop:
Buffer sperren
Rendere Daten aus Buffer
Buffer freigeben
Loop:
StartMain:
Do:
Berechne neue Spieldaten
Do:
Buffer1 freigegeben?
Loop:
Spieldaten ablegen in Buffer1 und setze Ready-Flag
Berechne neue Spieldaten
Do:
Buffer2 freigegeben?
Loop:
Spieldaten ablegen in Buffer2 und setze Ready-Flag
Loop:
Das geht aber nicht aus dem Threadtitel hervor: "meine derzeitige GameLoop"ZeHa hat geschrieben:aber in meinem Ur-Posting ging es eigentlich um die framerate-unabhängige Spieleprogrammierung und nicht um Multithreading.
einzugehen. Hab den Thread wieder gefunden, den ich meinte. VerlinktDie Diskussion an sich ist ja ok, und vielleicht findet sich ja irgendwann doch noch die Erleuchtung,