다음은 Android 앱에 구현 한 게임 루프 코드입니다.캡핑 프레임 - 비율
잘 작동하지만 문제는 30에서 로직 업데이트를 캐핑해도 문제가되지 않는다는 것입니다. 실제 렌더링은 배터리 수명에 좋지 않은 편입니다.
렌더링을 고정 된 양 (예 : 30fps 정도)으로 제한하거나 제한하는 방법을 알아낼 수 없습니다.
특히 렌더링은 중복 프레임을 렌더링하는 대신 (즉, 로직 업데이트가 발생하지 않은 경우) 로직이 업데이트 된 경우에만 렌더링해야합니다.
편집 : 방금 코드의 보간 부분을 추가했습니다. @Geobits에서 권장 한대로 프레임을 캡핑 할 때 문제가 될 수 있습니까?
int TICKS_PER_SECOND = 30;
int SKIP_TICKS = 1000/TICKS_PER_SECOND;
int MAX_FRAMESKIP = 10;
long next_game_tick = GetTickCount();
int loops;
bool game_is_running = true;
while(game_is_running) {
loops = 0;
while(GetTickCount() > next_game_tick && loops < MAX_FRAMESKIP) {
update_game();
next_game_tick += SKIP_TICKS;
loops++;
}
interpolation = float(GetTickCount() + SKIP_TICKS - next_game_tick)
/float(SKIP_TICKS);
display_game(interpolation);
}
감사합니다. @Geobits, 이것을 구현했는데 작동합니다 (확인 된 렌더링 및 게임 업데이트는 초당 동일한 시간에 발생합니다).하지만 내 스프 라이트의 '저크니스'가 발생합니다.이 원인이 무엇인지 알 수 있습니까? 그것을 피하는 방법? 다시 한 번 감사드립니다. – Zippy