diff --git a/Cargo.toml b/Cargo.toml index e15c111d6c4..d96b332e194 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -63,7 +63,7 @@ version = "0.6" optional = true [target.'cfg(unix)'.dependencies] -gfx_window_glfw = { path = "src/window/glfw", version = "0.14" } +gfx_window_glfw = { path = "src/window/glfw", version = "0.15" } gfx_window_sdl = { path = "src/window/sdl", version = "0.6" } [target.'cfg(windows)'.dependencies] @@ -143,6 +143,3 @@ genmesh = "0.4" noise = "0.1" image = "0.13" winit = "0.6" - -[target.x86_64-unknown-linux-gnu.dev-dependencies] -glfw = "0.12" diff --git a/src/window/glfw/Cargo.toml b/src/window/glfw/Cargo.toml index e57abe78215..5abce40f709 100644 --- a/src/window/glfw/Cargo.toml +++ b/src/window/glfw/Cargo.toml @@ -1,4 +1,4 @@ -# Copyright 2015 The Gfx-rs Developers. +# Copyright 2017 The Gfx-rs Developers. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ [package] name = "gfx_window_glfw" -version = "0.14.0" +version = "0.15.0" description = "GLFW window for gfx-rs" homepage = "https://github.com/gfx-rs/gfx" repository = "https://github.com/gfx-rs/gfx" @@ -28,6 +28,11 @@ documentation = "https://docs.rs/gfx_window_glfw" name = "gfx_window_glfw" [dependencies] -glfw = "0.13" +glfw = "0.14" gfx_core = { path = "../../core", version = "0.7" } gfx_device_gl = { path = "../../backend/gl", version = "0.14" } + +# Currently there is an issue with cargo and dev-dependencies: +# https://github.com/rust-lang/cargo/issues/860 +# TODO: move gfx to [dev-dependencies] once it gets resolved. +gfx = { path = "../../render", version = "0.15" } diff --git a/src/window/glfw/examples/window.rs b/src/window/glfw/examples/window.rs new file mode 100644 index 00000000000..ebc20053dcf --- /dev/null +++ b/src/window/glfw/examples/window.rs @@ -0,0 +1,55 @@ +// Copyright 2017 The Gfx-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 gfx; +extern crate gfx_window_glfw; +extern crate glfw; + +use glfw::{Action, Context, Key}; + +pub fn main() { + let mut glfw = glfw::init(glfw::FAIL_ON_ERRORS) + .ok() + .expect("Failed to initialize GLFW"); + + glfw.window_hint(glfw::WindowHint::ContextVersion(3, 2)); + glfw.window_hint(glfw::WindowHint::OpenGlForwardCompat(true)); + glfw.window_hint(glfw::WindowHint::OpenGlProfile(glfw::OpenGlProfileHint::Core)); + + let (mut window, events) = glfw.create_window(1024, 768, "Window example", glfw::WindowMode::Windowed) + .expect("Failed to create GLFW window."); + + window.set_key_polling(true); + window.set_close_polling(true); + window.make_current(); + glfw.set_error_callback(glfw::FAIL_ON_ERRORS); + let (_, _, _, _) = gfx_window_glfw::init(&mut window); + + //Note: actual drawing code is no different from the triangle example, or any other. + + let mut running = true; + while running { + glfw.poll_events(); + + for (_, event) in glfw::flush_messages(&events) { + match event { + glfw::WindowEvent::Key(Key::Escape, _, Action::Press, _) => running = false, + glfw::WindowEvent::Close => running = false, + _ => {}, + } + } + + window.swap_buffers(); + } +}