a2c00e9f77a0ea7c09b2cd3d1efd6f30c351503e
[rust_hw] / src / main.rs
1 extern crate sdl2;
2 extern crate gl;
3
4 //use std::ffi::CString;
5 //pub mod draw;
6
7 static _WIN_W : u32 = 800;
8 static _WIN_H : u32 = 600;
9
10 fn main() {
11     let _sdl = sdl2::init().unwrap();
12     let _video = _sdl.video().unwrap();
13     let _win = _video
14         .window("foobar", _WIN_W, _WIN_H)
15         .opengl() // add opengl flag
16         .resizable()
17         .build()
18         .unwrap();
19
20     let _gl_ctx = _win.gl_create_context().unwrap();
21     let _gl = gl::load_with(|s| _video.gl_get_proc_address(s) as
22                             *const std::os::raw::c_void);
23
24 //    let _vsdr = draw::Shader::load_vs_code(&CString::new(include_str!("data/quad.v.glsl").unwrap.unrap();
25 //    let _fsdr = draw::Shader::load_fs_code(&CString::new(include_str!("data/quad.f.glsl").unwrap.unrap();
26 //    let sdr_prog = draw::Program::from_shaders(&[vsdr, fsdr]).unwrap();
27
28     unsafe {
29         gl::ClearColor(0.3, 0.1, 0.1, 1.0);
30     }
31
32     let mut event_pump = _sdl.event_pump().unwrap();
33     'main: loop {
34         for _event in event_pump.poll_iter() {
35             // handle user input here
36             match _event {
37                 sdl2::event::Event::Quit {..} |
38                 sdl2::event::Event::KeyDown {keycode:
39                     Some(sdl2::keyboard::Keycode::Escape), ..} =>
40                         break 'main,
41                 _ => {},
42             }
43         }
44
45         unsafe {
46             gl::Clear(gl::COLOR_BUFFER_BIT);
47             gl::Viewport(0, 0, _WIN_W as i32, _WIN_H as i32);
48         }
49
50         _win.gl_swap_window();
51     }
52 }