summaryrefslogtreecommitdiff
path: root/src/graphics/Renderer.cpp
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-07-19 15:37:56 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-07-19 15:37:56 (GMT)
commit2b4ec998948e022be89330a4f04880ab11fbcb94 (patch)
tree692ce98c3d002fbe8bc78db0a708c450a3bcd427 /src/graphics/Renderer.cpp
parentdd0e6e7f4ddc5a1a9c25111275187b767d51bdb4 (diff)
downloadpowder-2b4ec998948e022be89330a4f04880ab11fbcb94.zip
powder-2b4ec998948e022be89330a4f04880ab11fbcb94.tar.gz
Use two functions for renderer drawing instead of several, fix alignment with Zoom Window border
Diffstat (limited to 'src/graphics/Renderer.cpp')
-rw-r--r--src/graphics/Renderer.cpp43
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++)