浏览代码

Xcode-iOS/Demos/src/fireworks.c: Make rendering CPU efficient

(cherry picked from commit 6c9c2a9ac2e59259db66d802aa9e000b26ead0e5)
Yorick Reum 2 周之前
父节点
当前提交
ab9f59e59a
共有 1 个文件被更改,包括 14 次插入4 次删除
  1. 14 4
      Xcode-iOS/Demos/src/fireworks.c

+ 14 - 4
Xcode-iOS/Demos/src/fireworks.c

@@ -456,7 +456,10 @@ main(int argc, char *argv[])
     while (!done) {
         SDL_Event event;
         double deltaTime = updateDeltaTime();
+        SDL_bool hasEvents = SDL_FALSE;
+        
         while (SDL_PollEvent(&event)) {
+            hasEvents = SDL_TRUE;
             if (event.type == SDL_QUIT) {
                 done = 1;
             }
@@ -466,10 +469,17 @@ main(int argc, char *argv[])
                 spawnEmitterParticle(x, y);
             }
         }
-        stepParticles(deltaTime);
-        drawParticles();
-        SDL_GL_SwapWindow(window);
-        SDL_Delay(1);
+        
+        /* Only update and render if we have active particles or just received events */
+        if (num_active_particles > 0 || hasEvents) {
+            stepParticles(deltaTime);
+            drawParticles();
+            SDL_GL_SwapWindow(window);
+            SDL_Delay(16); // Target 60 FPS when active
+        } else {
+            /* Idle state - wait for events with longer delay to save CPU */
+            SDL_Delay(100); // Much longer delay when idle
+        }
     }
 
     /* delete textures */