mesa: adjust glBitmap coords by a small epsilon
authorBrian Paul <brian.paul@tungstengraphics.com>
Thu, 24 Apr 2008 19:36:26 +0000 (13:36 -0600)
committerBrian Paul <brian.paul@tungstengraphics.com>
Thu, 24 Apr 2008 19:36:26 +0000 (13:36 -0600)
Fixes problem with bitmaps jumping around by one pixel depending on window
size.  The rasterpos is often X.9999 instead of X+1.
Run progs/redbook/drawf and resize window to check.

src/mesa/main/drawpix.c

index 0f64f1c1c0c02cbc10d6b27f804e0088f1fbb4f7..fa422bb3c7676e2f9e8886a2b0b0bfea948a5167 100644 (file)
@@ -377,8 +377,9 @@ _mesa_Bitmap( GLsizei width, GLsizei height,
 
    if (ctx->RenderMode == GL_RENDER) {
       /* Truncate, to satisfy conformance tests (matches SGI's OpenGL). */
-      GLint x = IFLOOR(ctx->Current.RasterPos[0] - xorig);
-      GLint y = IFLOOR(ctx->Current.RasterPos[1] - yorig);
+      const GLfloat epsilon = 0.0001;
+      GLint x = IFLOOR(ctx->Current.RasterPos[0] + epsilon - xorig);
+      GLint y = IFLOOR(ctx->Current.RasterPos[1] + epsilon - yorig);
 
       if (ctx->Unpack.BufferObj->Name) {
          /* unpack from PBO */