summaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c34
1 files changed, 27 insertions, 7 deletions
diff --git a/src/main.c b/src/main.c
index 4b6d413..e2c0fc6 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1513,7 +1513,7 @@ int main(int argc, char *argv[])
memset(vid_buf, 0, (XRES+BARSIZE)*YRES*PIXELSIZE);
draw_walls(vid_buf);
update_particles(vid_buf);
- draw_parts(vid_buf);
+ render_parts(vid_buf);
render_fire(vid_buf);
}
@@ -1726,7 +1726,6 @@ int main(int argc, char *argv[])
}
make_kernel();
- prepare_alpha(CELL, 1.0f);
stamp_init();
@@ -1739,6 +1738,11 @@ int main(int argc, char *argv[])
save_presets(0);
http_init(http_proxy_string[0] ? http_proxy_string : NULL);
+ prepare_alpha(CELL, 1.0f);
+ prepare_graphicscache();
+ flm_data = generate_gradient(flm_data_colours, flm_data_pos, flm_data_points, 200);
+ plasma_data = generate_gradient(plasma_data_colours, plasma_data_pos, plasma_data_points, 200);
+
if (cpu_check())
{
error_ui(vid_buf, 0, "Unsupported CPU. Try another version.");
@@ -1764,9 +1768,6 @@ int main(int argc, char *argv[])
if(aheat_enable)
update_airh();
}
-#ifdef OpenGL
- ClearScreen();
-#else
if(ngrav_enable && cmode==CM_FANCY)
{
@@ -1782,6 +1783,22 @@ int main(int argc, char *argv[])
gravity_mask();
gravwl_timeout--;
}
+#ifdef OGLR
+ if (cmode==CM_PERS)//save background for persistent, then clear
+ {
+ clearScreen(0.01f);
+ memset(part_vbuf, 0, (XRES+BARSIZE)*YRES*PIXELSIZE);
+ }
+ else //clear screen every frame
+ {
+ clearScreen(1.0f);
+ memset(part_vbuf, 0, (XRES+BARSIZE)*YRES*PIXELSIZE);
+ if (cmode==CM_VEL || cmode==CM_PRESS || cmode==CM_CRACK || (cmode==CM_HEAT && aheat_enable))//air only gets drawn in these modes
+ {
+ draw_air(part_vbuf);
+ }
+ }
+#else
if (cmode==CM_VEL || cmode==CM_PRESS || cmode==CM_CRACK || (cmode==CM_HEAT && aheat_enable))//air only gets drawn in these modes
{
draw_air(part_vbuf);
@@ -1790,7 +1807,7 @@ int main(int argc, char *argv[])
{
memcpy(part_vbuf, pers_bg, (XRES+BARSIZE)*YRES*PIXELSIZE);
memset(part_vbuf+((XRES+BARSIZE)*YRES), 0, ((XRES+BARSIZE)*YRES*PIXELSIZE)-((XRES+BARSIZE)*YRES*PIXELSIZE));
-}
+ }
else //clear screen every frame
{
memset(part_vbuf, 0, (XRES+BARSIZE)*YRES*PIXELSIZE);
@@ -1845,7 +1862,7 @@ int main(int argc, char *argv[])
#endif
}
- draw_parts(part_vbuf); //draw particles
+ render_parts(part_vbuf); //draw particles
draw_other(part_vbuf);
if(debug_flags & (DEBUG_PERFORMANCE_CALC|DEBUG_PERFORMANCE_FRAME))
@@ -1922,8 +1939,11 @@ int main(int argc, char *argv[])
}
fire_fc = (fire_fc+1) % 3;
}
+
+#ifndef OGLR
if (cmode==CM_FIRE||cmode==CM_BLOB||cmode==CM_FANCY)
render_fire(part_vbuf);
+#endif
render_signs(part_vbuf);