use types::c; export type SDL_GLContext = opaque; export type SDL_GLprofile = enum int { GL_CONTEXT_PROFILE_CORE = 0x0001, GL_CONTEXT_PROFILE_COMPATIBILITY = 0x0002, GL_CONTEXT_PROFILE_ES = 0x0004, }; export type SDL_GLcontextFlag = enum int { GL_CONTEXT_DEBUG_FLAG = 0x0001, GL_CONTEXT_FORWARD_COMPATIBLE_FLAG = 0x0002, GL_CONTEXT_ROBUST_ACCESS_FLAG = 0x0004, GL_CONTEXT_RESET_ISOLATION_FLAG = 0x0008, }; export type SDL_GLattr = enum { 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, GL_FRAMEBUFFER_SRGB_CAPABLE, GL_CONTEXT_RELEASE_BEHAVIOR, GL_CONTEXT_RESET_NOTIFICATION, GL_CONTEXT_NO_ERROR, }; @symbol("SDL_GL_CreateContext") fn _SDL_GL_CreateContext( window: *SDL_Window) *SDL_GLContext; export fn SDL_GL_CreateContext(window: *SDL_Window) (*SDL_GLContext | error) = { return wrapptr(_SDL_GL_CreateContext(window))?: *SDL_GLContext; }; export @symbol("SDL_GL_GetProcAddress") fn SDL_GL_GetProcAddress( proc: *const c::char) *opaque; @symbol("SDL_GL_SetAttribute") fn _SDL_GL_SetAttribute( attr: SDL_GLattr, value: int) int; @symbol("SDL_GL_GetAttribute") fn _SDL_GL_GetAttribute( attr: SDL_GLattr, value: *int) int; export fn SDL_GL_SetAttribute(attr: SDL_GLattr, value: int) (void | error) = { return wrapvoid(_SDL_GL_SetAttribute(attr, value)); }; export fn SDL_GL_GetAttribute(attr: SDL_GLattr) (int | error) = { let value = 0; wrapvoid(_SDL_GL_GetAttribute(attr, &value))?; return value; }; export @symbol("SDL_GL_SwapWindow") fn SDL_GL_SwapWindow(window: *SDL_Window) void; export @symbol("SDL_GL_GetSwapInterval") fn SDL_GL_GetSwapInterval() int; export @symbol("SDL_GL_GetDrawableSize") fn SDL_GL_GetDrawableSize( window: *SDL_Window, w: *int, h: *int) void; @symbol("SDL_GL_SetSwapInterval") fn _SDL_GL_SetSwapInterval(interval: int) int; export fn SDL_GL_SetSwapInterval(interval: int) (void | error) = { return wrapvoid(_SDL_GL_SetSwapInterval(interval)); };