using glfw header to access GL/gl.h
using portable byteswap