diff options
Diffstat (limited to 'src/main.c')
| -rw-r--r-- | src/main.c | 34 |
1 files changed, 27 insertions, 7 deletions
@@ -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); |
