extern crate glutin_window; extern crate graphics; extern crate opengl_graphics; extern crate piston; use glutin_window::GlutinWindow as Window; use opengl_graphics::{GlGraphics, OpenGL}; use piston::event_loop::{EventSettings, Events}; use piston::input::{RenderArgs, RenderEvent, UpdateArgs, UpdateEvent}; use piston::window::WindowSettings; pub struct App { gl: GlGraphics, steps_per_sec: u32, } impl App { fn render (&mut self, args: &RenderArgs) { use graphics::*; const BLACK: [f32; 4] = [0.0, 0.0, 0.0, 1.0]; self.gl.draw(args.viewport(), |c, gl| { // Clear the screen. clear(BLACK, gl); }); } fn update(&mut self, args: &UpdateArgs) { } } fn main() { // Make window // Change this to OpenGL::V2_1 if not working. let opengl = OpenGL::V3_2; // Create an Glutin window. let mut window: Window = WindowSettings::new("spinning-square", [800, 800]) .graphics_api(opengl) .exit_on_esc(true) .build() .unwrap(); let mut app = App { gl: GlGraphics::new(opengl), steps_per_sec: 2, }; let mut events = Events::new(EventSettings::new()); // Make grid // Quick life engine -> redraw let mut events = Events::new(EventSettings::new()); while let Some(e) = events.next(&mut window) { if let Some(args) = e.render_args() { app.render(&args); } if let Some(args) = e.update_args() { app.update(&args); } } }