係游戲每『渲染』1『畫面』呌1『幀』Frame, 影書每秒24格『菲林』24『幀』, Android每秒至高60『幀』.
Android Studio NDK
- 通過clock()獲得進程時鐘 度量時間整數值.
- 通過sysconf(_SC_CLK_TCK) 獲得時鐘信號, 每秒時鐘單元值, 係Linux此值為100
- 計算秒 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; } |