Zu hohe Prozessorlast bei SDL-Programm

Ich versteh nur nicht wie das benutzen soll! :confused: Ich aktiviere die Fehlersuche und dann startet er das Programm! Toll...und dann? es hängt sich auf wenn ichs wieder aktiviere und fertig is! Von der Fehlersuche kan garnix!

greetz
daddz
 
Ich kenne mich wie gesagt nicht damit aus und muss mir erstmal Zeit dafür nehmen damit ich kapier wie so ein Debugger funktioniert usw...
Könnte jemand von euch den Code vielleicht debuggen? Is ja nich so viel! Ihr könnt dann auch mal kompilieren und testen ob es sich bei euch auch aufhängt!

greetz
daddz
 
Ich habe den Code mal durch gedebugged (komisches Wort).
Dabei hab ich einen Fehler gesehen (war meine Schuld sorry) du musst beim dem Delay natürlich schauen, daß die diffTime kleiner als 20 ms ist, da ansonsten deine Schleife ja eh langsamer ist.
Denn ansonsten entstehen durch das "unsigned" relativ große Zahlen, was die CPU zwar nicht auslastet, aber dein Programm massiv blockiert.

Hier mal der Ausschnitt der Änderung:
Code:
// am Ende Zeit nehmen
        unsigned int endTime;
        endTime = SDL_GetTicks();
    
         // Differenz berechnen (tatsächliche Dauer der Schleife
        unsigned int diffTime = endTime-startTime;
        
         // 50 FPS abwarten (20 Millisekunden)
		if(diffTime<20)  // <--- das ist  W I C H T I G !
			SDL_Delay(20-diffTime);

Danach sollte alles Flüssig gehen.
Sorry für den Fehler.

Gruß Daniel
 
Perfekt! Vielen Dank! Funktioniert super! Der Prozessor ist jetzt "nur" noch zu 25% ausgelastet!

Danke!

greetz
daddz
 
Zurück