irgendwie möchte das bei mir nicht klappen - hab dutzende thread gelesen und auch im wiki geguckt aber irgendwas muss falsch sein. Denke ich habe das Grundprinzip verstanden nur weiss ich nicht was ich falsch mache.
zuerst deklariere ich :
Code:
var Freq, StartCount, FrameEndCount, SpeedFactor : Int64;
dann:
Code:
procedure TForm1.FormCreate(Sender: TObject);
begin
QueryPerformanceFrequency(Freq);
.....
end;
Code:
procedure TForm1.IdleHandler(Sender: TObject; var Done: Boolean);
begin
QueryPerformanceCounter(StartCount);
StartTime:= GetTickCount;
Render;
QueryPerformanceCounter(FrameEndCount);
SpeedFactor := ((FrameEndCount-StartCount) DIV Freq)*100;
DrawTime:= GetTickCount - StartTime;
Inc(TimeCount, DrawTime);
Inc(FrameCount);
if TimeCount >= 1000 then begin
Frames:= FrameCount;
TimeCount:= TimeCount - 1000;
FrameCount:= 0;
Caption:= InttoStr(Frames) + 'FPS';
ErrorHandler;
end;
sleep(1);
Done:= false;
end;
übrigens werden die Frame bei mir auch nicht als caption angezeigt ?!
und hinterher:
Code:
procedure TForm1.Bewegung;
begin
Ball.X:=(Ball.X+speed*SpeedFactor)*Ball.VektorX;
Ball.Y:=(Ball.Y+speed*SpeedFactor)*Ball.VektorY;
end;
Ball.Vektor ist nur 1 oder -1
Das Ergebnis ist, dass der Ball sich nicht mehr bewegt sindern still steht.
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Was macht denn das "DIV" da? Damit machst du ja eine Integer-Division, bei der das Ergebnis als ein in Richtung 0 gerundeter ganzer Wert ausgegeben wird (in diesem Fall 0). Da aber Speedfactor immer eine Fließkommazahl sein dürfte, muss da "normal" geteilt werden.
_________________ "Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0." - Hal Faber Meine Homepage: http://laboda.delphigl.com
Registriert: Mi Aug 02, 2006 16:58 Beiträge: 22 Wohnort: Clausthal-Zellerfeld
Und das die FPS nicht angezeigt werden ist eigentllich auch klar. ( ich weiss nicht warum das in dem Tutorial funktioniert hat ) Aber ich musste bei mir auch TForm1.Caption schreiben.
Also TForm1.Caption dürfte eigentlich nichgt funkionieren. Nur Form1.Caption und einfach nur Caption (weil der IdleHandler eine Methode von TForm1 ist)
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Im offiziellen DGL-Header heißt es "GLForm". Nichtsdestotrotz sollte das Caption alleine ausreichen.
_________________ "Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0." - Hal Faber Meine Homepage: http://laboda.delphigl.com
Also, hab jetzt SpeedFactor Extended gemacht, damit
Code:
/
funktioniert und ich nicht
Code:
DIV
nehmen muss. Trotzdem funktioniert es noch nicht. Der Ball fliegt zwar erst los (vorher tat sich garnichts) jedoch immer noch FPS abhängig, denn wenn ich nebenbei mehr Programme anmache, wechselt die Geschwindigkeit.
Dazu gibt es nun ein sehr merkwürdiges Verhalten nach der 1. Kollision. (zu einer 2. kommt es auch erst garnicht )
Nun warte ich wieder auf Hilfe und probier in derzeit mal ein wenig rum.
Das mit dem TForm1.Caption dacht ich auch erst, aber ging auch nicht.
wie gesagt, hab jetzt mal ein wenig (viel) rumgespielt und einfach manches aus dem OpenGL1.5 Templates (hier in den Files) übernommen. FPS werden jetzt angezeigt, nur das mit dem Ball hat noch nicht hin....
hier einfach mal mein ganzer code, ausgenommen die Schlaeger und das Spielfeld, hab ich in extra units gelassen. Hoffe ich könnt mir weiterhelfen, soass ich weiter an meinem Projekt arbeiten kann.
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Hmm dass das Ganze immer noch FPS-abhängig abläuft kann ich nicht nachvollziehen.
Grundsätzlich solltest du aber alle OpenGL-Operationen in Idle mit in die Zeitberechnung miteinbeziehen.
_________________ "Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0." - Hal Faber Meine Homepage: http://laboda.delphigl.com
Mitglieder in diesem Forum: 0 Mitglieder und 4 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.