I'm just getting started learning OpenGL and OpenTK. I hacked up a quick example which seems to be working okay. I used GameWindow, and I can see the convenience. My simple app works with the same binary on my win7/nvidia desktop and my MBP retina laptop.
I'd like some advice on handling device compatibility. My goal is the widest device compatibilty, so I targetted GL2.2 GLSL120. (and also because GL2.2 is the best I got on the Mac with OpenTK because of the Carbon stuff?)
However, my code doesn't work on the Intel HD 4000. Apparently they don't support some GL shader extensions *unless* I ask for GL 3.0. However, other parts of my code have to change to use GL3. (Because my code is written for GL2.2, it uses the legacy MatrixMode stuff).
I can abstract out the different OpenGL activities into some kind of HAL, implementing it once per GL version. However, I'm confused about how to handle this given the way the OpenGL version is bound by the GameWindow. It means I have to know my GL version before creating a gamewindow. Also, I'll need to store all of my program state outside of my gamewindow if I want to switch GL context versions without restarting.
What do folks do? pick an OpenGL version before making a GameWindow and never change it? Tear up and down gamewindow? stop using GameWindow?
Also, I would like to get live-resize of the window... but as far as I can see, NativeWindow doesn't support this. Do I have to go around NativeWindow, or fix it?