Search code examples
c++openglsdl

Do I need to call SDL_GL_DeleteContext before SDL_DestroyWindow?


In SDL if I destroy a window anyway, do I need to delete the OpenGL context beforehand or does it delete it automatically? I don't want a memory leak.

Also when do I need to call SDL_GL_MakeCurrent? Is this only required if I have multiple windows with a GLcontext each?

Couldn't find anything in the documentation.


Solution

  • Well I call

    SDL_GL_DeleteContext
    SDL_DestroyWindow
    SDL_QuitSubSystem
    

    in that order. I once read the documentation very carefully and I remember vaguely that somewhere in the documentation this was mentioned. Although I have to warn that I read the one for SDL2. However this should be the same in SDL1.

    Because all that SDL internals are easy to forget, I wrote a nice C++ wrapper:

    https://github.com/Superlokkus/CG1/blob/master/src/sdl2_opengl_helper.cpp#L68