Fix pixel-perfect draw2DLine on OpenGL

This commit is contained in:
sfan5
2021-03-11 23:48:05 +01:00
parent 4931b34625
commit 0335a52479
2 changed files with 5 additions and 4 deletions

View File

@ -1887,8 +1887,6 @@ void COpenGLDriver::draw2DRectangle(const core::rect<s32>& position,
void COpenGLDriver::draw2DLine(const core::position2d<s32>& start,
const core::position2d<s32>& end, SColor color)
{
// TODO: It's not pixel-exact. Reason is the way OpenGL handles line-drawing (search the web for "diamond exit rule").
if (start==end)
drawPixel(start.X, start.Y, color);
else
@ -1923,6 +1921,9 @@ void COpenGLDriver::draw2DLine(const core::position2d<s32>& start,
}
glDrawElements(GL_LINES, 2, GL_UNSIGNED_SHORT, Quad2DIndices);
// Draw non-drawn last pixel (search for "diamond exit rule")
glDrawArrays(GL_POINTS, 1, 1);
}
}