Browse Source

Check and testing timming #865

raysan5 5 năm trước cách đây
mục cha
commit
08adb4b8c3
2 tập tin đã thay đổi với 12 bổ sung9 xóa
  1. 9 8
      src/core.c
  2. 3 1
      src/text.c

+ 9 - 8
src/core.c

@@ -1265,27 +1265,29 @@ void EndDrawing(void)
 
     SwapBuffers();                  // Copy back buffer to front buffer
     PollInputEvents();              // Poll user events
-
+    
     // Frame time control system
     currentTime = GetTime();
     drawTime = currentTime - previousTime;
     previousTime = currentTime;
 
     frameTime = updateTime + drawTime;
-
+    
     // Wait for some milliseconds...
     if (frameTime < targetTime)
     {
         Wait((float)(targetTime - frameTime)*1000.0f);
 
         currentTime = GetTime();
-        double extraTime = currentTime - previousTime;
+        double waitTime = currentTime - previousTime;
         previousTime = currentTime;
 
-        frameTime += extraTime;
+        frameTime += waitTime;      // Total frame time: update + draw + wait
+        
+        //SetWindowTitle(FormatText("Update: %f, Draw: %f, Req.Wait: %f, Real.Wait: %f, Total: %f, Target: %f\n", 
+        //               (float)updateTime, (float)drawTime, (float)(targetTime - (updateTime + drawTime)), 
+        //               (float)waitTime, (float)frameTime, (float)targetTime));
     }
-
-    return;
 }
 
 // Initialize 2D mode with custom camera (2D)
@@ -1588,13 +1590,12 @@ void SetTargetFPS(int fps)
 // Returns current FPS
 int GetFPS(void)
 {
-    return (int)(1.0f/GetFrameTime());
+    return (int)roundf(1.0f/GetFrameTime());
 }
 
 // Returns time in seconds for last frame drawn
 float GetFrameTime(void)
 {
-    // NOTE: We round value to milliseconds
     return (float)frameTime;
 }
 

+ 3 - 1
src/text.c

@@ -759,7 +759,7 @@ void UnloadFont(Font font)
 // NOTE: Uses default font
 void DrawFPS(int posX, int posY)
 {
-    // NOTE: We are rendering fps every second for better viewing on high framerates
+    // NOTE: We are rendering fps every certain time for better viewing on high framerates
 
     static int fps = 0;
     static int counter = 0;
@@ -773,6 +773,8 @@ void DrawFPS(int posX, int posY)
         counter = 0;
     }
 
+    // TODO: Find a better way to calculate FPS, maybe calculate the mean of multiple measures?
+
     // NOTE: We have rounding errors every frame, so it oscillates a lot
     DrawText(TextFormat("%2i FPS", fps), posX, posY, 20, LIME);
 }