2013-08-15 1 views
1

저는 SFML을 처음 접했고 지금은 기본 스크롤링 게임을 만들고자합니다. 나는 기본적인 것들을 대부분 가지고 있지만 화면이 뒤떨어져 있음을 알기 시작했습니다. window.setFrameRateLimit 함수를 사용하여 모든 컴퓨터에서 이동 결과가 동일하지만 프로그램 실행 중 임의의 지연이 발생합니다. 나는 이것이 프레임 속도의 한계 때문에, 그리고 그것이 어떻게 이루어지는가 때문에 이것을한다고 생각한다. 특정 시간에만 프로그램을 실행하는 다른 방법이 있습니까? 이상적으로는 느린 컴퓨터에서도 같은 속도로 움직입니다.SFML의 특정 프레임에서만 실행

답변

1

SFML 2.0에서 setFrameRateLimit 지연 스파이크가 수정 된 것 같습니다. SFML 2.0으로 업그레이드 할 수없는 경우 자체 프레임 속도 제한기를 추가 할 수 있습니다. 여기에는 sleep()을 게임 루프에 추가하는 작업이 포함됩니다. 예 :

while(App.IsOpened()) { 
    float time = Clock.GetElapsedTime(); 

    // update game 
    // draw game 

    float timeToWait = (1.0/FRAMES_PER_SECOND) - (Clock.GetElapsedTime() - time); 
    if(timeToWait > 0) { 
     sleep(timeToWait * 1000); 
    } 
}