First step is getting an OpenGL Context.

This example is using SDL2.

  #include<stdio.h>
  #include<stdint.h>
  #include<GL/glew.h>
  #include<SDL.h>

  int main(int argc, char *argv[])
  {
          if(SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER) < 0) {
                  fprintf(stderr,"\nUnable to initialize SDL:  %s\n",SDL_GetError());
                  return 1;
          }

          SDL_GL_ResetAttributes();

          SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG);
          SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
          SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8);
          SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
          SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8);
          SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
          SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
          SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
          SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 3);

          SDL_Window *window = SDL_CreateWindow("OpenGL Example",
                                                SDL_WINDOWPOS_CENTERED,
                                                SDL_WINDOWPOS_CENTERED,
                                                1280,
                                                720,
                                                SDL_WINDOW_OPENGL |
                                                SDL_WINDOW_SHOWN);

          SDL_GLContext context = SDL_GL_CreateContext(window); // Context GET