I ran into the problem that nvidia-settings seems to be unable to display any vsync/sync to vblank settings when using Bumblebee.
I think I’ve fixed it by setting the __GL_SYNC_TO_VBLANK environment variable before running optirun:
__GL_SYNC_TO_VBLANK=1 optirun ./RogueLegacy
Of course you replace ./RogueLegacy by the binary you want to run. That appears to improve tearing a lot for me. Works for other OpenGL things as well.