C
Hallo Rapso,
danke für deine Antwort. Ich habe als Datentyp double genommen, dass sollte genau genug sein. Ich habe auch den Fehler in meinem Code gefunden - ich habe an der falschen Stelle gerundet...
Jetzt sieht das Ergebnis schon ganz gut aus bis auf eine Kleinigkeit:
Der Zeichen-Thread braucht ja selbst eine gewisse Zeit zum zeichnen der OpenGL-Sachen, diese Zeit summiert sich bis zur nächsten Ausführung von Thread A auf, sodass mir ein paar Pixel fehlen
Vereinfacht sieht das Ganze so aus
while(doRendering){
renderSth();
msleep(40);
}
Um das Problem zu lösen müsste ich die Zeit ermitteln, die renderSth() tatsächlich benötigt und diese von den 40ms abziehen. Ich habe schon verschiedene Methoden probiert (clock(), boost::chrono), um die Zeit zu messen, aber mir scheint, dass das nicht so trivial ist...
while(doRendering){
//Startzeit messen
renderSth();
//Endzeit messen
//Differenz zwischen Startzeit und Endzeit berechnen
msleep(40 /* - Differenz */);
}
Wie kann man diese Zeitmessung realisieren?
Gruß, ChillSn