Crash fix for wall drawing when OpenGL is enabled.

This commit is contained in:
Simon Robertshaw
2016-07-17 21:33:54 +01:00
parent 5b525852b4
commit 3b106b7c22

View File

@@ -63,7 +63,6 @@ void Renderer::RenderBegin()
draw_grav(); draw_grav();
DrawWalls(); DrawWalls();
render_parts(); render_parts();
if(display_mode & DISPLAY_PERS) if(display_mode & DISPLAY_PERS)
{ {
int i,r,g,b; int i,r,g,b;
@@ -751,14 +750,14 @@ void Renderer::DrawWalls()
for (int j = 0; j < CELL; j++) for (int j = 0; j < CELL; j++)
for (int i =0; i < CELL; i++) for (int i =0; i < CELL; i++)
if (i&j&1) if (i&j&1)
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = pc; vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = pc;
} }
else else
{ {
for (int j = 0; j < CELL; j++) for (int j = 0; j < CELL; j++)
for (int i = 0; i < CELL; i++) for (int i = 0; i < CELL; i++)
if (!(i&j&1)) if (!(i&j&1))
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = pc; vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = pc;
} }
} }
else if (wt == WL_WALLELEC) else if (wt == WL_WALLELEC)
@@ -767,9 +766,9 @@ void Renderer::DrawWalls()
for (int i = 0; i < CELL; i++) for (int i = 0; i < CELL; i++)
{ {
if (!((y*CELL+j)%2) && !((x*CELL+i)%2)) if (!((y*CELL+j)%2) && !((x*CELL+i)%2))
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = pc; vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = pc;
else else
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x808080); vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = PIXPACK(0x808080);
} }
} }
else if (wt == WL_EHOLE) else if (wt == WL_EHOLE)
@@ -778,16 +777,16 @@ void Renderer::DrawWalls()
{ {
for (int j = 0; j < CELL; j++) for (int j = 0; j < CELL; j++)
for (int i = 0; i < CELL; i++) for (int i = 0; i < CELL; i++)
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x242424); vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = PIXPACK(0x242424);
for (int j = 0; j < CELL; j += 2) for (int j = 0; j < CELL; j += 2)
for (int i = 0; i < CELL; i += 2) for (int i = 0; i < CELL; i += 2)
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x000000); vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = PIXPACK(0x000000);
} }
else else
{ {
for (int j = 0; j < CELL; j += 2) for (int j = 0; j < CELL; j += 2)
for (int i =0; i < CELL; i += 2) for (int i =0; i < CELL; i += 2)
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x242424); vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = PIXPACK(0x242424);
} }
} }
else if (wt == WL_STREAM) else if (wt == WL_STREAM)
@@ -837,27 +836,27 @@ void Renderer::DrawWalls()
case 1: case 1:
for (int j = 0; j < CELL; j += 2) for (int j = 0; j < CELL; j += 2)
for (int i = (j>>1)&1; i < CELL; i += 2) for (int i = (j>>1)&1; i < CELL; i += 2)
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = pc; vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = pc;
break; break;
case 2: case 2:
for (int j = 0; j < CELL; j += 2) for (int j = 0; j < CELL; j += 2)
for (int i = 0; i < CELL; i += 2) for (int i = 0; i < CELL; i += 2)
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = pc; vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = pc;
break; break;
case 3: case 3:
for (int j = 0; j < CELL; j++) for (int j = 0; j < CELL; j++)
for (int i = 0; i < CELL; i++) for (int i = 0; i < CELL; i++)
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = pc; vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = pc;
break; break;
case 4: case 4:
for (int j = 0; j < CELL; j++) for (int j = 0; j < CELL; j++)
for (int i = 0; i < CELL; i++) for (int i = 0; i < CELL; i++)
if (i == j) if (i == j)
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = pc; vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = pc;
else if (i == j+1 || (i == 0 && j == CELL-1)) else if (i == j+1 || (i == 0 && j == CELL-1))
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = gc; vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = gc;
else else
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x202020); vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = PIXPACK(0x202020);
break; break;
} }
@@ -905,7 +904,7 @@ void Renderer::DrawWalls()
for (int j = 0; j < CELL; j += 2) for (int j = 0; j < CELL; j += 2)
for (int i = 0; i < CELL; i += 2) for (int i = 0; i < CELL; i += 2)
// looks bad if drawing black blobs // looks bad if drawing black blobs
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x000000); vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = PIXPACK(0x000000);
} }
else else
{ {
@@ -936,10 +935,10 @@ void Renderer::DrawWalls()
if (i == j) if (i == j)
drawblob((x*CELL+i), (y*CELL+j), PIXR(pc), PIXG(pc), PIXB(pc)); drawblob((x*CELL+i), (y*CELL+j), PIXR(pc), PIXG(pc), PIXB(pc));
else if (i == j+1 || (i == 0 && j == CELL-1)) else if (i == j+1 || (i == 0 && j == CELL-1))
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = gc; vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = gc;
else else
// looks bad if drawing black blobs // looks bad if drawing black blobs
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x202020); vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = PIXPACK(0x202020);
break; break;
} }
} }