It most often boils down to Direct3D vs OpenGL. When the games have OpenGL mode available on Windows, switching to that also loses lots of performance.
Actually today's 3D tech sucks big time. Instead of defining the interface to access the GPU at hardware level, it's is defined by some software API. What I mean is that it could be done as CPU instead - there is a well defined instruction set that can be used by any program or any OS, it doesn't matter completely if it's Linux, Windows, BSD, MacOS or "hello world" program you just compiled, CPU just fetches the stream and executes it. To produce the stream, you can use free compiler, you can use commercial compiler or you can write it by hand in assembly or even with a hex editor.
With GPUs things are horrible, there is imaginary software API (actually many of them!), and there is vendor that supplies a broken driver that works on single OS with a single API (mostly) and nowhere else. And yes the driver is always broken, if you are a Windows PC gamer. what do you do when a new game comes out? Update your drivers. For every bigger game. It always means the same thing, that the game developers tried to do something new and hit a driver bug and needed vendors to fix their shit. And it has been like this for ages. In mobile world, where drivers are almost never updated after device comes out, things are a lot lot worse.
What could be done is that the GPUs accepted fixed standard command stream, just like CPUs do with their instruction sets. Vendors could supply binary blobs that would load directly into GPUs to be able to fix their bugs. The huge improvement here would be the loss of OS and driver dependence, and the lame imaginary graphics programming API like D3D or OpenGL. I do understand that different GPU vendors do things in different ways, but it is also true for CPU vendors (it's long known that x86 translates it's lame instruction set into internal uops before executing anything) and they can manage it just fine.
So that's why the 3D tech sucks. It's one of the reasons I can't make myself work on Pyra's 3D driver hacks. No matter what you do the 3D driver will always be broken, like it is on pandora.