summaryrefslogtreecommitdiff
path: root/sdl2/gl.ha
diff options
context:
space:
mode:
Diffstat (limited to 'sdl2/gl.ha')
-rw-r--r--sdl2/gl.ha82
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));
+};