// Copyright 2015 Brendan Zabarauskas and the gl-rs developers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. extern crate gl; extern crate glutin; fn main() { let mut events_loop = glutin::EventsLoop::new(); let window = glutin::WindowBuilder::new(); let gl_window = glutin::ContextBuilder::new() .build_windowed(window, &events_loop) .unwrap(); // It is essential to make the context current before calling `gl::load_with`. let gl_window = unsafe { gl_window.make_current().unwrap() }; // Load the OpenGL function pointers // TODO: `as *const _` will not be needed once glutin is updated to the latest gl version gl::load_with(|symbol| gl_window.get_proc_address(symbol) as *const _); events_loop.run_forever(|event| { use glutin::{ControlFlow, Event, WindowEvent}; if let Event::WindowEvent { event, .. } = event { if let WindowEvent::CloseRequested = event { return ControlFlow::Break; } } unsafe { gl::ClearColor(0.3, 0.3, 0.3, 1.0); gl::Clear(gl::COLOR_BUFFER_BIT); } gl_window.swap_buffers().unwrap(); ControlFlow::Continue }); }