# HG changeset patch # User alfadur # Date 1541793825 -10800 # Node ID 3b83ec44e10be4c29cc9595f7979ac58f31ddea9 # Parent 675aa499a70eefe9c418bf4bbc31b0151d2bd60e pass hwrunner gl context into engine diff -r 675aa499a70e -r 3b83ec44e10b rust/hwrunner/Cargo.toml --- a/rust/hwrunner/Cargo.toml Fri Nov 09 20:15:29 2018 +0300 +++ b/rust/hwrunner/Cargo.toml Fri Nov 09 23:03:45 2018 +0300 @@ -7,4 +7,6 @@ [dependencies] gfx = "0.17" glutin = "0.18" -gfx_device_gl = "0.15" +gfx_window_glutin = "0.26" + +lib-hedgewars-engine = { path = "../lib-hedgewars-engine" } diff -r 675aa499a70e -r 3b83ec44e10b rust/hwrunner/src/main.rs --- a/rust/hwrunner/src/main.rs Fri Nov 09 20:15:29 2018 +0300 +++ b/rust/hwrunner/src/main.rs Fri Nov 09 23:03:45 2018 +0300 @@ -4,8 +4,19 @@ WindowEvent, EventsLoop, GlWindow, + GlContext }; +use gfx::{ + texture, + format, + Encoder +}; + +use gfx_window_glutin::init_existing; + +use hedgewars_engine::EngineInstance; + fn init(event_loop: &EventsLoop, size: LogicalSize) -> GlWindow { use glutin::{ ContextBuilder, @@ -24,6 +35,13 @@ let mut event_loop = EventsLoop::new(); let window = init(&event_loop, LogicalSize::new(1024.0, 768.0)); + let (mut device, mut factory, color_view, depth_view) = + init_existing::(&window); + + let mut encoder: Encoder<_, _> = factory.create_command_buffer().into(); + + let engine = EngineInstance::new(); + let mut is_running = true; while is_running { event_loop.poll_events(|event| { @@ -36,6 +54,13 @@ }, _ => () } - }) + }); + + encoder.clear(&color_view, [0.5, 0.0, 0.0, 1.0]); + engine.render(&mut encoder, &color_view); + + encoder.flush(&mut device); + + window.swap_buffers().unwrap(); } } diff -r 675aa499a70e -r 3b83ec44e10b rust/lib-hedgewars-engine/Cargo.toml --- a/rust/lib-hedgewars-engine/Cargo.toml Fri Nov 09 20:15:29 2018 +0300 +++ b/rust/lib-hedgewars-engine/Cargo.toml Fri Nov 09 23:03:45 2018 +0300 @@ -4,6 +4,9 @@ authors = ["Andrey Korotaev "] [dependencies] +gfx = "0.17" +gfx_device_gl = "0.15" + land2d = { path = "../land2d" } lfprng = { path = "../lfprng" } integral-geometry = { path = "../integral-geometry" } diff -r 675aa499a70e -r 3b83ec44e10b rust/lib-hedgewars-engine/src/lib.rs --- a/rust/lib-hedgewars-engine/src/lib.rs Fri Nov 09 20:15:29 2018 +0300 +++ b/rust/lib-hedgewars-engine/src/lib.rs Fri Nov 09 23:03:45 2018 +0300 @@ -2,6 +2,8 @@ extern crate land2d; extern crate landgen; extern crate lfprng; +extern crate gfx; +extern crate gfx_device_gl; mod world; mod engine_message; @@ -12,6 +14,23 @@ world: world::World, } +impl EngineInstance { + pub fn new() -> Self { + let world = world::World::new(); + Self { world } + } + + pub fn render( + &self, + context: &mut gfx::Encoder, + target: &gfx::handle::RenderTargetView) + where R: gfx::Resources, + C: gfx::CommandBuffer + { + context.clear(target, [0.0, 0.5, 0.0, 1.0]); + } +} + #[repr(C)] #[derive(Copy, Clone)] pub struct PreviewInfo {