Not all monitors will work with a 3.3v coming out of the FPGA, and, if they do, it might be potentially on the edge of functionality that temperature could throw things off. (I ran into this a few times, for real, but, I was testing with multiple completely different LCD screens... Some worked great at 3.3v. Others seem to, however, mysteriously would go haywire at times. The HS was sitting on the threshold of functionality for those screen and the FPGA output buffer moves slightly with it's temperature and that digital IO trying to feed a monitor cable and resistive load to GND at the other end.)
To be safe, I would use 74ACT04, or HCT04, 3 gates in parallel, powered from 5v, to drive that potential 75ohm load on HS&VS that some monitors have on the HS & VS inputs. Others may have a 1k load, but, still, a nice low impedance 5v drive to spec is good and you will protect your FPGA from ESD and any other unpredictable surge from that VGA connector.
Between the FPGA output and the 74ACT04 inputs, I would have a 470 ohm pullup to 3.3v strengthening that crucial weaker high drive of the FPGA output to match it's larger low drive current and to pass that CMOS/TTL emulated threshold of a 5v powered HCT04/ACT04.
EG
-> T04 ->
FPGA OUT VS -> T04 -> VGA connector VS pin
-> T04 ->
-> T04 ->
FPGA OUT HS -> T04 -> VGA connector HS pin
-> T04 ->
In your FPGA code, just invert the HS & VS out.