metal: Fix line drawing, again.

Ryan C. Gordon 2020-11-08 03:18:05 -05:00
parent 4ea1a10bd2
commit 731a5d1c53
1 changed files with 9 additions and 22 deletions

View File

@ -1066,32 +1066,19 @@ METAL_QueueDrawLines(SDL_Renderer * renderer, SDL_RenderCommand *cmd, const SDL_
angles. Maybe !!! FIXME for later, though. */
points += count - 2; /* update the last line. */
verts += count - 2;
verts += (count * 2) - 2;
float xstart = /*0.5f +*/ points[0].x; /* 0.5f to get to the center of the pixel. */
float ystart = /*0.5f +*/ points[0].y;
float xend = /*0.5f +*/ points[1].x;
float yend = /*0.5f +*/ points[1].y;
const float xstart = points[0].x;
const float ystart = points[0].y;
const float xend = points[1].x;
const float yend = points[1].y;
if (xstart == xend) { /* vertical line */
if (yend > ystart) {
yend += 1.0f;
} else {
ystart += 1.0f;
}
} else if (ystart == yend) { /* horizontal line */
if (xend > xstart) {
xend += 1.0f;
} else {
xstart += 1.0f;
}
if (ystart == yend) { /* horizontal line */
verts[0] += (xend > xstart) ? 1.0f : -1.0f;
} else if (xstart == xend) { /* vertical line */
verts[1] += (yend > ystart) ? 1.0f : -1.0f;
}
*(verts++) = xstart;
*(verts++) = ystart;
*(verts++) = xend;
*(verts++) = yend;
return 0;
}