2017-03-22 7 views
1

최근에 기본 60fps가 아닌 144fps로 실행되도록 게임이 변경되었지만 항상 143fps로 유지됩니다. 당신이 fps 카운팅 프로그램없이 차이점을 말할 수 없기 때문에 큰 문제는 아니지만, 왜 이런 일이 일어나고 어떻게 수정해야하는지 알고 싶습니다. 여기 내 코드가있다.Monogame이 목표 fps보다 약간 아래에서 실행됩니다.

protected override void Initialize() 
    { 
     TargetElapsedTime = TimeSpan.FromSeconds(1.0/144.0f); 

     IsFixedTimeStep = true; 

     graphics.SynchronizeWithVerticalRetrace = false; 

     base.Initialize(); 
    } 
+0

나는 그 이유를 잘 모르지만, Monogame이 항상 한 프레임을 예상보다 적게 렌더링한다는 것을 알았습니다. TargetElapsedTime을 145FPS로 설정하십시오. –

답변

0

몇 시간 동안 코드를 수정 해 본 결과 이것이 최상의 설정 조합이라는 것을 알았습니다. 나는 VSync를 켜 놓았지만 "FixedTimeStep"은 비활성화했다. 표준 모니터가 아닌 경우 게임은 60fps에서 실행되는 경우 144fps로 상당히 일관되게 실행됩니다. 이것은 프레임 기반이 아닌 시간 기반 애니메이션으로 몇 가지 애니메이션을 변경해야한다는 것을 의미하지만 어쨌든 그렇게하려고 생각했습니다.

protected override void Initialize() 
    { 
     TargetElapsedTime = TimeSpan.FromSeconds(1.0/144.0f); 

     IsFixedTimeStep = false; 

     base.Initialize(); 
    } 
2

Game.UpdateGame.Draw를 호출 한 후, MonoGame 시스템 절전 기능 (Thread.Sleep() 정확하게하기)를 호출하여 초과 시간을 보낸다. 수면 호출은 기껏해야 밀리 초의 정확도를 가지며 여러 요인에 따라 더 나쁠 수 있습니다. 143 FPS와 144 FPS의 차이는 프레임 당 약 0.05 밀리 초입니다. 시스템 타이머 해상도보다 작습니다.

내가 아는 한, 144 FPS 디스플레이에서 VSync를 사용하려는 것과 별개로 할 수있는 일은 거의 없습니다. 그 차이는 극히 작으며 측정 오류가 발생할 수 있습니다. 나는 그것을 고치려고 애 쓰지 않을 것이다.