Suggestions for the OpenGL
glGetTexImage is a bad API
glGetTexImage is existed since OpenGL 1.0 released, and it is a bad API for texture arrays(such as texture 1D array, texture 2D array, texture cube array). In direct3d, programmers can get the pixel data from the subresource by mapping the resource; but OpenGL will get all of pixel data from a mipmap level of the bound texture object to the pixel buffer object. That must be tricky because we programmers only need pixel data from one subresource in some cases. The API glGetTexImage is old enough, I think Khronos should change the API like the following:
void glGetTexImageIndex(GLenum target, GLuint index, GLuint level, GLenum format, GLenum type, GLvoid *img);
void glGetTexImageIndex(GLenum target, GLuint index, GLuint level, GLenum internalformat, GLvoid *data);
DSA(Direct State Access) should include in the core
Since OpenGL 1.x, we programmers need to bind the OpenGL object to the binding point, and unbind the object when it is useless, bind, unbind, bind, unbind... Why not use Direct State Access?