to prevent glGetUniformLocation calls for every uniform and every frame, I want to save the uniform location to an unsigned int (after checking for -1 error). It would be very convenient to save this location as 16 Bit wide integer. The OpenGL specification tells me that the return value is 32 Bit wide. Now my question: Is it (very) problematic to use a 16 Bit unsigned int to do this? Do more than 2^16 uniform location even get used (by a rather small app)? Is it possible that the returned int is bigger than 2^16 despite “free” locations < 2^16?