Did you SDL_GL_SetSwapInterval(1) that the SDL_GL_SetSwapInterval(1) call was successful? Your FPS should be limited by your refresh rate if your call was successful.
Did you correctly initialize OpenGL in SDL for double buffering? As for exmaple :
SDL_Window *window; SDL_GLContext context; SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5); SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 5); SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5); SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); window = SDL_CreateWindow("OpenGL Window", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_OPENGL); if (!window) { fprintf(stderr, "Couldn't create window: %s\n", SDL_GetError()); return; } context = SDL_GL_CreateContext(window); if (!context) { fprintf(stderr, "Couldn't create context: %s\n", SDL_GetError()); return; } int r, g, b; SDL_GL_GetAttribute(SDL_GL_RED_SIZE, &r); SDL_GL_GetAttribute(SDL_GL_GREEN_SIZE, &g); SDL_GL_GetAttribute(SDL_GL_BLUE_SIZE, &b); printf("Red size: %d, Green size: %d, Blue size: %d\n", r, g, b);
SDL is not the foundation; there are no high-level features such as frame rate control. However, you must have a frame rate limit with VSync. If there is no restriction, then VSync is not working.
Please see more detailed guides on setting up OpenGL applications in SDL , for example , see also .
source share