added glutGetProcAddress and handled platform invariance