2012-02-28 1 views
1

에 FPS를 제한 :자바 : (기다릴)는 메인 루프에서 내 코드 (창에서 2D 게임)에서 나는이가 64

try{ 
    synchronized(this){ 

    wait(3); 
    } 
} 
catch(Exception ex) { 
    System.out.println(ex); 
} 
이 코드 조각 (64)에 모자를 씌우는 FPS에 원인이

및 나는 이유를 모른다. 다른 동기화 된 블록을 사용하지 않습니다. 유쾌하게도 웹 브라우저가 열리면 fps에 더 이상 표시되지 않습니다. 아무도 64fps 제한을 없애는 방법을 말해 줄 수 있습니까? 이 문제로 다른 주제를 찾지 못했습니다.

EDIT :

  • 대기하지 않고 (3); - 180fps.
  • 기다림 (3)과 브라우저 (Opera)가 열린 상태에서 ~ 113fps.
  • 대기 모드 (3) 및 브라우저 없음 - 64fps.

브라우저가 fps를 어떻게 바꿀 수 있습니까?

+0

누가 일치하는 notify() 호출을하고 있습니까? –

+0

자세한 내용을 입력하십시오. – CodeBlue

+0

모자를 씌우지 않은 FPS는 무엇입니까? –

답변

5

waitsleep의 매개 변수의 해상도는 밀리 초 단위이지만 요청하는 지연을 정확히 알 수는 없습니다. Windows 시스템 해상도에

는 15분의 1,000 = 66fps

+0

백그라운드 (Opera)에서 웹 브라우저를 실행하면 어떻게됩니까? –

+0

@JanBurak - 대기 (3)은 일반적으로 최소 15ms를 기다리고 있습니다. 나는 오페라가 도움이되는 이유를 모른다. 아마도 그것은 진드기 해상도를 증가시킵니다. 필자는 오라클 데이터베이스가 가능하다고 믿습니다. – OldCurmudgeon

+0

아, 알겠습니다. 기다리기 전과 후에 시간을 측정했습니다. 브라우저가 열리면 차이는 시간 0 (전혀 대기하지 않음)과 다른 시간 15-16 (1 초 동안)입니다. 제가 생각하기에 실제로는 15ms가 걸리고 3ms는 걸리지 않는다는 것을 지적 해 주셔서 감사합니다 (저는 초보자 일 뿐이므로 거의 모든 정보가 중요합니다). 브라우저가 없으면 차이는 항상 15 또는 16이므로 브라우저가 wait()를 방해해야합니다. –

0

60fps를 넘지 마십시오. 현대 디스플레이는 60fps 이상을 표시하지 않습니다.

+0

문제는 fps가 60 이하로 떨어질 수 있지만 실제로는 fps가 더 안정적이며 출고시만큼 떨어지지 않는 것이 었습니다. 나는 한계를 야기하는 것에 관해서 아직도 궁금하다. –

+0

트릭은 60fps 이하로 떨어지지 않습니다. 그러나 더 많은 프레임을 계산할 필요가 없습니다. –

2

당신이 다른 동기화 블록을 사용하지 않는 경우, 다음 스레드를 notify() 할 일이 없기를주는 약 15ms의입니다. 즉, 앱을 반복 할 때마다 최소 3 밀리 초 동안 잠자기 상태로 있다고 앱을 알리는 것입니다. 또한 스레드가 잠자기 상태가 될 때 시간 퀀텀을 포기하고 OS에 따라 시계 해상도가 일반적으로 1ms 이상이기 때문에 시간이 더 많이 걸릴 수 있습니다.

64 FPS는 프레임이 15ms보다 약간 더 걸린다는 것을 의미합니다. "uncapped"FPS가 무엇인지 말해 주시고, 프레임 당 얼마나 많은 ms를 계산하여 그 차이가 무엇인지 확인하십시오. 손실 된 코드가없는 프레임 시간의 차이가 3-10ms (10ms는 아마도 정상 시스템의 클록 세분성에 대한 합리적인 상한 임) 인 경우 이는 아마도 wait()의 결과 일뿐입니다. 프레임이 wait()없이 1ms 밖에 걸리지 않으면 추가 효과가있을 수 있습니다.

Jan 's comments 이후 EDIT : 115FPS는 프레임 당 8.7ms를 의미합니다. wait(3) 때문에 15 개로 갈 가능성이 있습니다. 백그라운드에서 다른 앱을 실행하면 어떻게 영향을 미칠지 잘 모르겠습니다. 아마도 백그라운드에서 다른 작업을하는 것은 스케줄러의 동작에 영향을 미칩니다. 다른 작업이 FPS를 115 또는 중간 값으로 되 돌리십니까?

01 월 두 번째 설명 후 편집 : 115 대신 180 일 경우 프레임 당 5.5 밀리 초가됩니다. 차이가 커지지 만 Windows 클록이 다소 거칠기 때문에 (위에서 지적한 것처럼) 이는 위에서 설명한 효과의 한도 내에 있습니다.

+0

기다림없이 (3); - 180fps. 대기 (3) 및 브라우저 열기 - 113fps. 대기 (3) 및 브라우저없이 - 64 fps. 내가 혼란스럽게 만들었던 이유는 브라우저가 더 빨리 진행되었다는 것입니다. –