Android Studio NDK-Frames幀

Android Studio NDK-Frames幀
Android Studio NDK-Frames幀

係游戲每『渲染』1『畫面』呌1『幀』Frame,  影書每秒24格『菲林』24『幀』, Android每秒至高60『幀』.

Android Studio NDK

  1. 通過clock()獲得進程時鐘 度量時間整數值.
  2. 通過sysconf(_SC_CLK_TCK) 獲得時鐘信號, 每秒時鐘單元值, 係Linux此值為100
  3. 計算秒 float seconds= (float)clock() / (float)sysconf(_SC_CLK_TCK);
#include <time.h>
clock_t clock(void)

 

#include <unistd.h>
long sysconf(int name)

 

量度程式耗時

long  clockTicks = sysconf(_SC_CLK_TCK);// 時鐘信號

clock_t startTime = clock();//當前時鈡

// 調用程式

clock_t currentTime = clock();//當前時鈡

float seconds = (float)(currentTime – startTime) / (float)clockTicks;

 

需要struct結構用蒞計『幀』Frame, 公式加下:

float _fps = Frames * (double)(currentTime – startTime) / (float)clockTicks ;

 

『幀』Frame
typedef struct FPS_TYP {

clock_t  startTime;// 啓動時鐘

long  clockTicks;// 時鐘信號

float Frames;// 每秒渲染幀數

int n;// 幀計

}FPS,*FPS_PTR;

 

計算每秒渲染幀
float Get_FPS(FPS_PTR fps){

++fps->n;// 幀加壹

if (fps->n > 100) {

fps->Frames = Get_FPS(fps, fps->n);

fps->n = 0;

}

return fps->Frames;

}

float Get_FPS(FPS_PTR fps, int  Frames){

clock_t  currentTime = clock();// 進程時鈡

double _fps = (double)Frames * (double)(currentTime – fps->startTime) / (float)fps->clockTicks ;

fps->startTime = currentTime;// 重置時間

return (float)_fps;

}

 

發表評論