Fixed choppiness with variable framerate.
Note: framerate seemed to decrease, may be due to processes at the time.
This commit is contained in:
parent
110c7dbfad
commit
1f8bc5fb61
@ -83,6 +83,7 @@ namespace SlatedGameToolkit.Framework {
|
|||||||
DateTime previousTime = DateTime.Now;
|
DateTime previousTime = DateTime.Now;
|
||||||
TimeSpan timePassedFromLastUpdate = TimeSpan.Zero;
|
TimeSpan timePassedFromLastUpdate = TimeSpan.Zero;
|
||||||
TimeSpan timePassedFromLastRender = TimeSpan.Zero;
|
TimeSpan timePassedFromLastRender = TimeSpan.Zero;
|
||||||
|
TimeSpan updateTimePassedFromLastRender =TimeSpan.Zero;
|
||||||
TimeSpan updateDeltaTime = GameEngine.updateDeltaTime;
|
TimeSpan updateDeltaTime = GameEngine.updateDeltaTime;
|
||||||
TimeSpan frameDeltaTime = GameEngine.frameDeltaTime;
|
TimeSpan frameDeltaTime = GameEngine.frameDeltaTime;
|
||||||
deltaChanged = true;
|
deltaChanged = true;
|
||||||
@ -160,6 +161,7 @@ namespace SlatedGameToolkit.Framework {
|
|||||||
previousTime = frameStart;
|
previousTime = frameStart;
|
||||||
|
|
||||||
timePassedFromLastUpdate += difference;
|
timePassedFromLastUpdate += difference;
|
||||||
|
updateTimePassedFromLastRender += difference;
|
||||||
while (timePassedFromLastUpdate > updateDeltaTime) {
|
while (timePassedFromLastUpdate > updateDeltaTime) {
|
||||||
//Updates.
|
//Updates.
|
||||||
manager.Update(updateDeltaTime.TotalSeconds <= 0 ? timePassedFromLastUpdate.TotalSeconds : updateDeltaTime.TotalSeconds);
|
manager.Update(updateDeltaTime.TotalSeconds <= 0 ? timePassedFromLastUpdate.TotalSeconds : updateDeltaTime.TotalSeconds);
|
||||||
@ -173,7 +175,14 @@ namespace SlatedGameToolkit.Framework {
|
|||||||
timePassedFromLastRender += difference;
|
timePassedFromLastRender += difference;
|
||||||
if (timePassedFromLastRender > frameDeltaTime) {
|
if (timePassedFromLastRender > frameDeltaTime) {
|
||||||
//Draw calls.
|
//Draw calls.
|
||||||
manager.Render(updateDeltaTime.TotalSeconds <= 0 ? 1 : Math.Max(timePassedFromLastUpdate / updateDeltaTime, 0));
|
double prog = updateTimePassedFromLastRender / updateDeltaTime;
|
||||||
|
if (prog > 1) {
|
||||||
|
prog = 1;
|
||||||
|
} else if (prog < 0) {
|
||||||
|
prog = 0;
|
||||||
|
}
|
||||||
|
manager.Render(updateDeltaTime.TotalSeconds <= 0 ? 1 : prog);
|
||||||
|
updateTimePassedFromLastRender = TimeSpan.Zero;
|
||||||
timePassedFromLastRender = TimeSpan.Zero;
|
timePassedFromLastRender = TimeSpan.Zero;
|
||||||
} else {
|
} else {
|
||||||
Thread.Yield();
|
Thread.Yield();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user