I have 960x3000 map image in png and I'm scrolling it in a loop like this (it's called in 60 FPS loop):

    glBindTexture( GL_TEXTURE_2D, mapTex[iBgImg]);
    double mtstart = 0.0f - fBgVPos/(double)BgSize;
    double mtend = mtstart + mtsize;
    glTexCoord2d(0.0, mtstart); glVertex2f(fBgX, TOP_MARGIN);
    glTexCoord2d(1.0, mtstart); glVertex2f(fBgX + MAP_WIDTH, TOP_MARGIN);
    glTexCoord2d(1.0, mtend); glVertex2f(fBgX + MAP_WIDTH, BOTTOM_MARGIN);
    glTexCoord2d(0.0, mtend); glVertex2f(fBgX, BOTTOM_MARGIN);

unfortunately it isn't smooth when the game is in windowed mode. However, it is smooth in full screen mode. I'm using GLFW for windows. Maybe there is something wrong with my method? Is there anything better? Or could this be hardware problem?

Edit: Window is created using

 glfwOpenWindowHint(GLFW_REFRESH_RATE, 60);

and main loop is using glfwSwapInterval(1) to ensure 60 FPS;

  • \$\begingroup\$ How do you call this function? Are you using some timer callback or displayfunc callback? \$\endgroup\$
    – zacharmarz
    Commented Apr 23, 2011 at 12:38
  • 2
    \$\begingroup\$ Try to add glFinish; before SwapBuffers. It may make the animation look smoother. I can add more detail if that helps. \$\endgroup\$
    – Kromster
    Commented Aug 2, 2011 at 9:09

1 Answer 1


copied from my comment

You need to add glFinish; before SwapBuffers command. This will force OpenGL to display rendering ASAP, instead of waiting for more data you may pass to it or relying on OpenGL sense of "right time" to finish. It may make the animation look smoother, because in current code if OpenGL waited just 1ms more the whole frame according to refresh rate will be delayed by 1/60s and next frame after it will probably get skipped - hence the jaggy motion.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .