summaryrefslogtreecommitdiff
path: root/sdl2/gl.ha
blob: b609f6cfb92a24be73d3b3563e8b511d90e4f376 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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));
};