The problem is that when the CPU can't keep up, it drops one frame, so your game logic goes down to 30 fps. So it's going from 60 to 30 to 60, making the game hard to play. I have a few ideas for preprocessing the visibility. My hard limit seems to be around 1100 vertices on screen, the game now goes from 700 to up to 1600 sometimes, so it's uneven. Of course, there are 2 cpus, but sending the draw command to the slave doesn't help that much (SGL slPutpolygonS). I could probably brute force my way to 60 fps by alternating the matrix transformation between slave and main CPU, but I want to optimize everything and keep some room for extra effects. The main problem for high vertices count is the way that by subdividing a map for culling you duplicate many vertices, putting a strain on the CPU.