diff options
Diffstat (limited to 'src/graphics/Renderer.cpp')
| -rw-r--r-- | src/graphics/Renderer.cpp | 43 |
1 files changed, 36 insertions, 7 deletions
diff --git a/src/graphics/Renderer.cpp b/src/graphics/Renderer.cpp index 5bf8eef..30f1bfd 100644 --- a/src/graphics/Renderer.cpp +++ b/src/graphics/Renderer.cpp @@ -35,6 +35,29 @@ extern "C" #define drawrect(args) g->drawrect(args) #endif +void Renderer::RenderBegin() +{ + + draw_air(); + render_parts(); + render_fire(); + draw_grav(); + DrawWalls(); + DrawSigns(); +#ifndef OGLR + RenderZoom(); + FinaliseParts(); +#endif +} + +void Renderer::RenderEnd() +{ +#ifdef OGLR + RenderZoom(); + FinaliseParts(); +#endif +} + void Renderer::clearScreen(float alpha) { #ifdef OGLR @@ -245,7 +268,7 @@ void Renderer::FinaliseParts() } glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glDisable( GL_TEXTURE_2D ); -#else +#elif defined(OGLI) g->draw_image(vid, 0, 0, VIDXRES, VIDYRES, 255); #endif } @@ -254,7 +277,7 @@ void Renderer::RenderZoom() { if(!zoomEnabled) return; - #ifdef OGLR + #if defined(OGLR) int sdl_scale = 1; int origBlendSrc, origBlendDst; float zcx1, zcx0, zcy1, zcy0, yfactor, xfactor, i; //X-Factor is shit, btw @@ -344,8 +367,8 @@ void Renderer::RenderZoom() int x, y, i, j; pixel pix; pixel * img = vid; - drawrect(zoomWindowPosition.X-2, zoomWindowPosition.Y-2, zoomScopeSize*ZFACTOR+2, zoomScopeSize*ZFACTOR+2, 192, 192, 192, 255); - drawrect(zoomWindowPosition.X-1, zoomWindowPosition.Y-1, zoomScopeSize*ZFACTOR, zoomScopeSize*ZFACTOR, 0, 0, 0, 255); + drawrect(zoomWindowPosition.X-2, zoomWindowPosition.Y-2, zoomScopeSize*ZFACTOR+4, zoomScopeSize*ZFACTOR+4, 192, 192, 192, 255); + drawrect(zoomWindowPosition.X-1, zoomWindowPosition.Y-1, zoomScopeSize*ZFACTOR+2, zoomScopeSize*ZFACTOR+2, 0, 0, 0, 255); clearrect(zoomWindowPosition.X, zoomWindowPosition.Y, zoomScopeSize*ZFACTOR, zoomScopeSize*ZFACTOR); for (j=0; j<zoomScopeSize; j++) for (i=0; i<zoomScopeSize; i++) @@ -2103,12 +2126,18 @@ void Renderer::CompileRenderMode() //If firemode is removed, clear the fire display if(!(render_mode & FIREMODE) && (old_render_mode & FIREMODE)) { - std::fill(fire_r[0]+0, fire_r[(YRES/CELL)-1]+((XRES/CELL)-1), 0); - std::fill(fire_g[0]+0, fire_g[(YRES/CELL)-1]+((XRES/CELL)-1), 0); - std::fill(fire_b[0]+0, fire_b[(YRES/CELL)-1]+((XRES/CELL)-1), 0); + ClearAccumulation(); } } +void Renderer::ClearAccumulation() +{ + //Fire + std::fill(fire_r[0]+0, fire_r[(YRES/CELL)-1]+((XRES/CELL)-1), 0); + std::fill(fire_g[0]+0, fire_g[(YRES/CELL)-1]+((XRES/CELL)-1), 0); + std::fill(fire_b[0]+0, fire_b[(YRES/CELL)-1]+((XRES/CELL)-1), 0); +} + void Renderer::AddRenderMode(unsigned int mode) { for(int i = 0; i < render_modes.size(); i++) |
