shithub: 3dee

Download patch

ref: 0a0395453120ef14e23e56095e09520aeb3af595
parent: 380057f08bc96785ec1fc7801e457ff3d08e91c0
author: rodri <rgl@antares-labs.eu>
date: Sun Jun 29 07:36:02 EDT 2025

med,solar,vis: better render loops

--- a/med.c
+++ b/med.c
@@ -501,6 +501,10 @@
 
 			nbsend(drawc, nil);
 			t0 = nanosec();
+		}else{
+			Δt = HZ2NS(60) - Δt;
+			if(Δt >= 1000000ULL)
+				sleep(Δt/1000000ULL);
 		}
 	}
 }
--- a/solar.c
+++ b/solar.c
@@ -584,6 +584,10 @@
 			unlockdisplay(display);
 			nbsend(drawc, nil);
 			t0 = nanosec();
+		}else{
+			Δt = HZ2NS(60) - Δt;
+			if(Δt >= 1000000ULL)
+				sleep(Δt/1000000ULL);
 		}
 	}
 }
--- a/vis.c
+++ b/vis.c
@@ -289,8 +289,9 @@
 			prim->mtl = mtl;
 	}
 
-	time = t0 = nanosec();
+	t0 = nanosec();
 	for(;;){
+		time = nanosec();
 		setuniform(shader, "time", VANumber, &time);
 
 		qlock(&scenelk);
@@ -312,9 +313,12 @@
 				if((mtl->diffusemap->image = readmemimage(fd)) == nil)
 					sysfatal("readmemimage: %r");
 			}
-			time = t0 = nanosec();
-		}else
-			time = t0 + Δt;
+			t0 = nanosec();
+		}else if(!doprof){
+			Δt = HZ2NS(60) - Δt;
+			if(Δt >= 1000000ULL)
+				sleep(Δt/1000000ULL);
+		}
 	}
 }
 
--