Commit 21fb49df authored by Sam Lantinga's avatar Sam Lantinga

Of COURSE that trick wouldn't work on all renderers. Fall back to something...

Of COURSE that trick wouldn't work on all renderers.  Fall back to something for now, hopefully figure out a better way to do this later.

If we have to, we can use vertical line and horizontal line textures for vertical and horizontal lines, and then create custom textures for diagonal lines and software render those.  It's terrible, but at least it would be pixel perfect.

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%404215
parent 0c8bb393
......@@ -1150,20 +1150,30 @@ GL_RenderLine(SDL_Renderer * renderer, int x1, int y1, int x2, int y2)
(GLfloat) renderer->b * inv255f,
(GLfloat) renderer->a * inv255f);
/* The line is half open, so we need tiny segments at the endpoints
* so that we guarantee coverage of the beginning and final pixels.
* http://www.opengl.org/documentation/specs/version1.1/glspec1.1/node47.html
*/
data->glBegin(GL_LINES);
/* Ensure coverage of the first point */
data->glVertex2f(0.1f + x1, 0.1f + y1);
data->glVertex2f(0.5f + x1, 0.5f + y1);
/* Draw the requested line */
data->glVertex2f(0.5f + x1, 0.5f + y1);
data->glVertex2f(0.5f + x2, 0.5f + y2);
/* Ensure coverage of the second point */
data->glEnd();
/* The line is half open, so we need one more point to complete the line.
* http://www.opengl.org/documentation/specs/version1.1/glspec1.1/node47.html
*/
data->glBegin(GL_POINTS);
#ifdef __APPLE__
/* Mac OS X seems to always leave the second point open */
data->glVertex2f(0.5f + x2, 0.5f + y2);
data->glVertex2f(0.9f + x2, 0.9f + y2);
#else
/* Linux seems to use the right-most or bottom-most point open */
if (x1 > x2) {
data->glVertex2f(0.5f + x1, 0.5f + y1);
} else if (x2 > x1) {
data->glVertex2f(0.5f + x2, 0.5f + y2);
} else if (y1 > y2) {
data->glVertex2f(0.5f + x1, 0.5f + y1);
} else if (y2 > y1) {
data->glVertex2f(0.5f + x2, 0.5f + y2);
}
#endif
data->glEnd();
return 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment