DirectX Framelimit


SyStemChaoS

Mitglied
Hallo.

Ich versuche seit heut Morgen schon einen ordentlichen Framelimiter zu erstellen für mein Spiel. Das Problem ist: Environment.TickCount aktualisiert je 15 Ticks und ich bekomme entweder 60 oder 30 FPS. Nichts dazwischen.

Weiß Jemand wie ich das Probelem beheben könnte?
Thx.
 

SyStemChaoS

Mitglied
Ab Framework 2.0 nicht mehr vorhanden, soweit ich das verstanden habe. Gibt es nicht die Möglichkeit einfach auf einen leistungsfähigen Timer zuzugreifen?
 

SyStemChaoS

Mitglied
OMG! Was für ein Erfolgserlebnis ^^ ... Alles funktioniert 1A. Die Monitorfrequenz die man auswählt wird automatisch zum Framelimit (kann man aber auch ausstellen) und dieser Limiter ist im vergleicht zu TickCount so extrem genau x_X ...

Hier noch meine Lösung ^^! ...

Code:
        Dim CPUFrequency As Long = PerfCount.QueryPerformanceFrequency()
        Dim FrameTime As Double = CPUFrequency / FPSLimit

        Dim BuildTimeStart As Long = 0
        Dim BuildTimeEnd As Long = 0
        Dim LimitTime As Double = 0.0


        If FPSLimit <> 0 Then
            Do While running
                Try
                    If LimitTime <= PerfCount.QueryPerformanceCounter Then
                        BuildTimeStart = PerfCount.QueryPerformanceCounter()

                        engine.UpdateFrame()
                        engine.RenderFrame()

                        BuildTimeEnd = PerfCount.QueryPerformanceCounter()
                        LimitTime = BuildTimeStart + FrameTime
                    End If

                Catch stopexp As Threading.ThreadAbortException
                    Return
                End Try
            Loop
(...)
Falls es wer verbessern kann, weil irgendwas nicht so gut ist, bitte nur zu.
 

SyStemChaoS

Mitglied
Ok, ich seh's grad selbst ... das "BuildTimeEnd = PerfCount.QueryPerformanceCounter()" ... ist unnötig weil es nirgends verwendet wird -.- .... omg *g ...

Weniger als vier Microsekunden pro Frame mehr für mein Spiel ^^ ... naja.

[Edit:]
Und jaaaahaa -.- ... ... es ist nicht die CPU Frequenz, ich benenne die Variablen direkt mal um *g ... oh man. Zu glücklich um zu denken :)
 
Zuletzt bearbeitet:

Neue Beiträge