Why is there still screen tearing even when fps are limited to be equal to monitor refresh rate?
Solution 1:
Tearing occurs when the graphics card's buffer is sent to the monitor while that same buffer is being changed. You still get tearing even if the FPS is limited to the refresh rate of the monitor because those things aren't locked together without vertical sync enabled.
Think of it like you're in a classroom, where the teacher is writing notes on the board. You're taking pictures of the board as the teacher is writing them. You want to take the picture when the board is full of notes. If you take a picture while the teacher is working, or while they're erasing part of the board to write new notes, your photo will be missing some of the notes.
It doesn't matter if during the class period you take 6 pictures and the teacher fills the board 6 times, right? You could take 6 pictures right at the beginning and miss everything. You could take the pictures evenly spaced (every 10 minutes, say) and miss stuff because the teacher takes longer or shorter to fill the board each time.
Instead, it matters that you take the picture at the right time. Your pictures must be "in sync" with the teacher.
"Taking the same number of pictures as there are blackboards full of notes" is locking the FPS to the refresh rate of the monitor. There's no guarantee that every time the monitor refreshes, the graphics card is between frames.
"Waiting until the blackboard is full of notes before taking a picture" is vertical sync. The graphics system is synchronized and thus only complete frames are shown.
Solution 2:
Because even if your fps is the same as refresh rate of the monitor, it doesn't mean the frames are synchronized with the refresh rate. Screen tearing can happen at any fps, if vsync is off.