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
use cty::c_int;

pub mod ll {
	#![allow(non_camel_case_types)]

	use cty::c_int;

	extern "C" {
		pub fn SDL_GL_SetAttribute(attr: c_int, value: c_int) -> c_int;
		pub fn SDL_GL_SwapBuffers();
	}
}

#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
pub enum GLAttribute {
	RedSize = 0,
	GreenSize,
	BlueSize,
	AlphaSize,
	BufferSize,
	DoubleBuffer,
	DepthSize,
	StencilSize,
	AccumRedSize,
	AccumGreenSize,
	AccumBlueSize,
	AccumAlphaSize,
	Stereo,
	MultiSampleBuffers,
	MultiSampleSamples,
	AcceleratedVisual,
	SwapControl,
}

pub fn set_attribute(attr: GLAttribute, value: isize) -> isize {
	unsafe { ll::SDL_GL_SetAttribute(attr as c_int, value as c_int) as isize }
}

pub fn swap_buffers() {
	unsafe {
		ll::SDL_GL_SwapBuffers();
	}
}