There's no such thing as QOpenGLFunctions in Qt 4 (QOpenGL* classes have been all introduced in Qt 5).
Both of your links are indeed pointing at two different Qt 5 classes:
And both of those classes are OpenGL function resolvers, so you can write something like:
// get the object from somewhere (usually, a QOpenGLContext) QOpenGLFunctions *functions = ... functions->glCreateShader(...); functions->glDrawArrays(...);
The difference between them is:
_X_Y_Profileclasses, only work in a Desktop OpenGL context compatible with the class name (for instance,
4_2_Corewill work with any OpenGL context whose version is equal or bigger than 4.2, and Core or Compatibility profile).
If you want to use instancing, you can choose either a suitable
QOpenGLFUnctions_X_Y_Profile if you only aim desktop (so you need at least version 3.1), or
QOpenGLExtraFunctions. Both have