blob: f3bd74b19f3cd269776601744ae39382f1f44a3e [file] [log] [blame]
// 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
});
}