Set up smoothing hints at setup time.
Fix radar tween-out.
This commit is contained in:
@@ -135,6 +135,11 @@ void RageDisplay::SetupOpenGL()
|
|||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||||
|
|
||||||
|
/* Line antialiasing is fast on most hardware, and saying "don't care"
|
||||||
|
* should turn it off if it isn't. */
|
||||||
|
glHint(GL_LINE_SMOOTH_HINT, GL_DONT_CARE);
|
||||||
|
glHint(GL_POINT_SMOOTH_HINT, GL_DONT_CARE);
|
||||||
|
|
||||||
/* Initialize the default ortho projection. */
|
/* Initialize the default ortho projection. */
|
||||||
glMatrixMode( GL_PROJECTION );
|
glMatrixMode( GL_PROJECTION );
|
||||||
glLoadIdentity();
|
glLoadIdentity();
|
||||||
@@ -364,12 +369,8 @@ void RageDisplay::DrawLoop( const RageVertex v[], int iNumVerts, float LineWidth
|
|||||||
if( g_vertMode != GL_LINE_LOOP )
|
if( g_vertMode != GL_LINE_LOOP )
|
||||||
FlushQueue();
|
FlushQueue();
|
||||||
|
|
||||||
/* Line antialiasing is fast on most hardware, and saying "don't care"
|
|
||||||
* should turn it off if it isn't. */
|
|
||||||
glEnable(GL_LINE_SMOOTH);
|
glEnable(GL_LINE_SMOOTH);
|
||||||
glEnable(GL_POINT_SMOOTH);
|
|
||||||
glHint(GL_LINE_SMOOTH_HINT, GL_DONT_CARE);
|
|
||||||
glHint(GL_POINT_SMOOTH_HINT, GL_DONT_CARE);
|
|
||||||
/* Our line width is wrt the regular internal SCREEN_WIDTHxSCREEN_HEIGHT screen,
|
/* Our line width is wrt the regular internal SCREEN_WIDTHxSCREEN_HEIGHT screen,
|
||||||
* but these width functions actually want raster sizes (that is, actual pixels).
|
* but these width functions actually want raster sizes (that is, actual pixels).
|
||||||
* Scale the line width and point size by the average ratio of the scale. */
|
* Scale the line width and point size by the average ratio of the scale. */
|
||||||
@@ -383,6 +384,8 @@ void RageDisplay::DrawLoop( const RageVertex v[], int iNumVerts, float LineWidth
|
|||||||
AddVerts( v, iNumVerts );
|
AddVerts( v, iNumVerts );
|
||||||
FlushQueue();
|
FlushQueue();
|
||||||
|
|
||||||
|
glDisable(GL_LINE_SMOOTH);
|
||||||
|
|
||||||
/* Round off the corners. This isn't perfect; the point is sometimes a little
|
/* Round off the corners. This isn't perfect; the point is sometimes a little
|
||||||
* larger than the line, causing a small bump on the edge. Not sure how to fix
|
* larger than the line, causing a small bump on the edge. Not sure how to fix
|
||||||
* that.
|
* that.
|
||||||
@@ -391,11 +394,22 @@ void RageDisplay::DrawLoop( const RageVertex v[], int iNumVerts, float LineWidth
|
|||||||
* line size of 3 at 640x480 and 1024x768; I don't know what it would do at
|
* line size of 3 at 640x480 and 1024x768; I don't know what it would do at
|
||||||
* other line sizes. */
|
* other line sizes. */
|
||||||
glPointSize((LineWidth - .3f) * factor);
|
glPointSize((LineWidth - .3f) * factor);
|
||||||
|
|
||||||
|
/* Hack: if the points will all be the same, we don't want to draw
|
||||||
|
* any points at all, since there's nothing to connect. That'll happen
|
||||||
|
* if both scale factors in the matrix are ~0. (Actually, I think
|
||||||
|
* it's true if two of the three scale factors are ~0, but we don't
|
||||||
|
* use this for anything 3d at the moment anyway ...) */
|
||||||
|
RageMatrix &mat = GetTopModelMatrix();
|
||||||
|
if(mat.m[0][0] < 1e-5 && mat.m[1][1] < 1e-5)
|
||||||
|
return;
|
||||||
|
|
||||||
|
glEnable(GL_POINT_SMOOTH);
|
||||||
|
|
||||||
g_vertMode = GL_POINTS;
|
g_vertMode = GL_POINTS;
|
||||||
AddVerts( v, iNumVerts );
|
AddVerts( v, iNumVerts );
|
||||||
FlushQueue();
|
FlushQueue();
|
||||||
|
|
||||||
glDisable(GL_LINE_SMOOTH);
|
|
||||||
glDisable(GL_POINT_SMOOTH);
|
glDisable(GL_POINT_SMOOTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user