스마트기기개발관련/OpenGL (그래픽, 게임)

안드로이드 Android FPS 구하기 타이머 관련

AlrepondTech 2012. 11. 13. 17:04
반응형

 

 

 

=================================

=================================

=================================

 

 

 

 

출처: http://gogorchg.tistory.com/entry/Android-FPS-%EA%B5%AC%ED%95%98%EA%B8%B0

 

[ Android ] FPS 구하기

 | 
 현재 개발중인 App의 FPS를 물어보시는 분이 많아서,
결국 구하는 방법을 만들었다.

 공식만 알고 나니 간단했다.

먼저 전역 변수로 세가지를 셋팅!

long fpsStartTime = 0L;             // Frame 시작 시간

int frameCnt = 0;                      // 돌아간 Frame 갯수
double timeElapsed = 0.0f;         // 그 동안 쌓인 시간 차이


void 반복 함수(){
            
            //시간 차이 구하기 

 

 

 

long fpsEndTime = System.currentTimeMillis(); float timeDelta = (fpsEndTime - fpsStartTime) * 0.001f;

// Frame 증가 셋팅 
frameCnt++;timeElapsed += timeDelta;
// FPS를 구해서 로그로 표시
if(timeElapsed >= 1.0f){
    float fps = (float)(frameCnt/timeElapsed);        Log.d("fps","fps : "+fps);                  frameCnt = 0;         timeElapsed = 0.0f;}

// Frame 시작 시간 다시 셋팅 
fpsStartTime = System.currentTimeMillis();

 

 

 


 꼭! App 시작 부분에 fpsStartTime을 셋팅하는 것을 잊지마세요.ㅎ

 

 

 그럼 FPS를 잘 조절하시면서 좋은 App 만드세요.

오늘도 즐코딩! 
 
 
 
 
 

 

=================================

=================================

=================================

 

 

 
출처: http://gogorchg.tistory.com/entry/Android-%ED%94%84%EB%A0%88%EC%9E%84-%EC%86%8D%EB%8F%84-%EC%A1%B0%EC%A0%88
 

쓰레드를 조절할 때, postDelay를 이용해서 프레임 속도를 조절하는데요.

Opengl을 사용할 경우 라이브러리 자체내에서 스레드를 돌리기 때문에

프레임 속도를 조절하기가 힘든 경우가 있었습니다.

그래서 이같은 소스가를 사용하는데요.

 

private static long targetFrameInterval = 1000L / 30L;  // 프레임 속도 30
private long frame = 30L;

// 스레드 콜백 함수 (무한 반복 하는 함수)
public synchronized void onDrawFrame(GL10 gl) {

 

 

// 프레임 처음 시간 설정

 

 

long frameStartTime = System.currentTimeMillis();

//.. 뭔가 뿌려주기 위한 소스 등등.

// 프레임 시간을 넘기면 그 시간 만큼 정지

 

 

 

 

 

 

 

long frameEndTime = System.currentTimeMillis();

long delta = frameEndTime - frameStartTime;

if (targetFrameInterval - delta > frame) {

try {

Thread.sleep(targetFrameInterval - delta);

} catch (InterruptedException e) {}

 

 

 

}
 

 


 저두 구글링을 통해서 알아낸 겁니다.

알았다기 보단 퍼 온거죠..^^;;; 

사이트를 잊어버려서.. 결국 이렇게 올렸다는..헤헤 
 

 

 

=================================

=================================

=================================

 

 

반응형