답변:
아뇨. 수면은 최소 수면 시간 만 보장 하지만 실제로는 임의의 시간 동안 수면을 취할 수 있습니다. 타이머 해상도 (timeBeginPeriod를 통해 설정)도 중요하며, 타이머에 QueryPerformanceCounter와 같은 다른 것을 사용하더라도 Sleep을 제어하려면 여전히 timeBeginPeriod가 필요합니다.
요약하면 다음과 같습니다.
Sleep을 사용하는 유일한 경우는 모바일 장치와 같은 CPU 사용을 줄이려는 경우입니다. 그럼에도 불구하고 수면 (1)을 사용하게됩니다. 이를 사용하여 프레임 속도를 제어하는 것은 좋은 방법이 아닙니다.
vsync를 강제로 설정하는 것은 고정 된 프레임 속도를 얻는 일반적인 방법 중 하나이지만 다른 하드웨어는 서로 다른 새로 고침 빈도로 실행되며 다른 컴퓨터에서 일관된 고정 프레임 속도를 유지할 수 없습니다 (하드웨어 종류에 따라 다름) 물론 타겟팅하고 있습니다).
이 시점 에서이 기사를 언급해야합니다 : Gaffer On Games-Fix Your Timestep! . 시뮬레이션에서 일관된 타임 스텝을 얻는 데 필요한 단계를 설명합니다.
짧은 대답 : 아니오, 그렇지 않습니다.
고정 된 프레임 속도를 유지하려면 특정 프레임 속도를 강제하는 특정 콜백 함수를 호출해야합니다. 분명히, 루프에서 단일 반복이 얼마나 오래 걸리는지는 수정 휴면 시간을 설정할 수 없습니다.
GLUT는 glutTimerFunc ()를 제공 합니다. OpenGL에서 프로그래밍하는 경우 필요한 기능입니다. 이 예제 또는 이 예제를 살펴보십시오 .
Sleep
가요?