basic opengl initialization framework