Windows 7 x86
MG 3.7.1 opengl
Intel graphics hd
Dual full hd monitor setup (60 hz)
I have a game running at approximately 50 fps with visible signs of variable screen tearing. I tried to apply Vsync to eliminate the tearing.
Graphics.SynchronizeWithVerticalRetrace = true
This didn’t seem to have any effect, so I tried to set the Present Interval to 2 since the frame rate couldn’t reach the monitor’s refresh rate.
Graphics.GraphicsDevice.PresentationParameters.PresentationInterval = PresentInterval.Two;
This had an interesting result. The game presented a constant 30fps as expected, and the screen tearing continued to happen, however, it was ALWAYS happening approximately in the same horizontal line, only a few cm from the top of the top screen. (during many tests it was always in the same spot)
This makes me believe that the game’s frame rate was synchronized with the monitors’ refresh rate since the tearing was always in the same spot. The problem is that, for some reason, the front/back buffers are being swapped briefly after the screen starts updating the frame with the front buffer data.
Does anyone have some helpful insight into why this happens and how to fix it?
Important note: for irrelevant reasons, I can’t install any external software or firmware in this system, so I need to solve this problem without updating the GPU drivers, and preferably with this same version of monogame (last case solution)
Since I couldn’t find a solution yet, and I read that some old intel drivers had problems using Vsync with OpenGL I tried porting the game to DirectX, however, I encountered some uncorrelated problems described here: