For some reason I have to do a glFlush() or the game screen won't display. The stuff I've read seems to say I don't need to and in fact shouldn't as the program will hang about for ages syncing with OGL. Which is what it does.

The code I've written works on OS X and WINDERS (on which I don't need to do a flush) and the majority is platform independent.

I've zipped up my OS X specfic code which you can see here. I do the flush on line 101 in NSOpenGLView.mm You can find the file here:

Are you using single buffering by accident? When using double buffering you rarely ever need to call glFlush(). As you've found, the common wisdom is that if you do need to call flush then you are probably doing something wrong.