diff options
author | Lassi Pulkkinen <lassi@pulk.fi> | 2024-10-31 03:11:21 +0200 |
---|---|---|
committer | Lassi Pulkkinen <lassi@pulk.fi> | 2024-10-31 03:51:35 +0200 |
commit | ae44478b30d890fe0fb04022f44d474dcdcc3f9d (patch) | |
tree | 5f462459ae4b47d22114eed717d1382d08cf4dfe /sdl2/gl.ha |
Diffstat (limited to 'sdl2/gl.ha')
-rw-r--r-- | sdl2/gl.ha | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/sdl2/gl.ha b/sdl2/gl.ha new file mode 100644 index 0000000..b609f6c --- /dev/null +++ b/sdl2/gl.ha @@ -0,0 +1,82 @@ +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)); +}; |