sig
  type context
  external create_context : win:Sdlwindow.t -> Sdlgl.context
    = "caml_SDL_GL_CreateContext"
  external make_current : win:Sdlwindow.t -> ctx:Sdlgl.context -> int
    = "caml_SDL_GL_MakeCurrent"
  external unload_library : unit -> unit = "caml_SDL_GL_UnloadLibrary"
  external extension_supported : extension:string -> bool
    = "caml_SDL_GL_ExtensionSupported"
  external set_swap_interval : interval:int -> unit
    = "caml_SDL_GL_SetSwapInterval"
  external get_swap_interval : unit -> int = "caml_SDL_GL_GetSwapInterval"
  external swap_window : Sdlwindow.t -> unit = "caml_SDL_GL_SwapWindow"
  external delete_context : Sdlgl.context -> unit
    = "caml_SDL_GL_DeleteContext"
  type gl_attr =
      GL_RED_SIZE
    | GL_GREEN_SIZE
    | GL_BLUE_SIZE
    | GL_ALPHA_SIZE
    | GL_BUFFER_SIZE
    | GL_DOUBLEBUFFER
    | GL_DEPTH_SIZE
    | GL_STENCIL_SIZE
    | GL_ACCUM_RED_SIZE
    | GL_ACCUM_GREEN_SIZE
    | GL_ACCUM_BLUE_SIZE
    | GL_ACCUM_ALPHA_SIZE
    | GL_STEREO
    | GL_MULTISAMPLEBUFFERS
    | GL_MULTISAMPLESAMPLES
    | GL_ACCELERATED_VISUAL
    | GL_RETAINED_BACKING
    | GL_CONTEXT_MAJOR_VERSION
    | GL_CONTEXT_MINOR_VERSION
    | GL_CONTEXT_EGL
    | GL_CONTEXT_FLAGS
    | GL_CONTEXT_PROFILE_MASK
    | GL_SHARE_WITH_CURRENT_CONTEXT
  external set_attribute : Sdlgl.gl_attr -> int -> unit
    = "caml_SDL_GL_SetAttribute"
  external get_attribute : Sdlgl.gl_attr -> int = "caml_SDL_GL_GetAttribute"
end