OpenGL 컨텍스트 창에서 일부 애니메이션이 실행 중이므로 계속해서 그릴 필요가 있습니다. 그래서 다음 코드를 생각해 냈습니다 :.NET Folded by 60 FPS?
void InitializeRedrawTimer()
{
var timer = new Timer();
timer.Interval = 1000/60;
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
}
void timer_Tick(object sender, EventArgs e)
{
glWin.Draw();
}
그게 단지 40FPS를 제공합니다. 그러나 간격을 1ms로 설정하면 60을 얻을 수 있습니다. 그래서 다른 20ms는 어디로 갔습니까? 타이머의 정확성이 떨어지거나 그 원인이 무엇입니까? 프로그램을 최대한 빨리 실행하고 싶다면 draw func을 계속 호출 할 수있는 방법이 있습니까?
니스! 'Application.Idle'을 사용하면 1ms 타이머보다 훨씬 더 우아 해 보입니다. 나는 내일이 StopWatch를 시도해야 할 것이다. 감사! ** 편집 : ** 사실, 거짓말을했습니다. 창 크기를 조정하거나 이동할 때 유휴 상태가 중지되어 다시 그리기가 중단됩니다. 기본적으로 그리기의 우선 순위가 낮아집니다. 어쩌면 최소한의 다시 그리기 속도를 적용하기 위해 타이머를 고수 할 것입니다. 두 가지 방법 중 하나를 결합 할 수있는 이유도 없습니다. – mpen
또한 StopWatch는 콜백 이벤트가 아닌 타이밍 작업에만 유용합니다. – mpen
유휴 상태가 끝나면 타이머를 시작한 다음 유휴 이벤트가 발생하면 다시 중지/확인하십시오. 이런 식으로 아주 가깝게 얻을 수 있습니다. – Nanook