diff options
Diffstat (limited to 'stockton-render')
-rw-r--r-- | stockton-render/Cargo.toml | 45 | ||||
-rw-r--r-- | stockton-render/src/lib.rs | 66 |
2 files changed, 111 insertions, 0 deletions
diff --git a/stockton-render/Cargo.toml b/stockton-render/Cargo.toml new file mode 100644 index 0000000..4dd5547 --- /dev/null +++ b/stockton-render/Cargo.toml @@ -0,0 +1,45 @@ +[package] +name = "stockton-render" +version = "0.1.0" +authors = ["Oscar <oscar.shrimpton.personal@gmail.com>"] +edition = "2018" + +[dependencies] +stockton-types = { path = "../stockton-types" } +winit = "0.19.1" +gfx-hal = "0.2.0" + +[features] +default = ["empty"] +empty = ["gfx-backend-empty"] +metal = ["gfx-backend-metal"] +gl = ["gfx-backend-gl"] +dx11 = ["gfx-backend-dx11"] +dx12 = ["gfx-backend-dx12"] +vulkan = ["gfx-backend-vulkan"] +unstable = [] + +[dependencies.gfx-backend-empty] +version = "0.2" +optional = true + +[dependencies.gfx-backend-gl] +version = "0.2" +features = ["glutin"] +optional = true + +[dependencies.gfx-backend-vulkan] +version = "0.2" +optional = true + +[target.'cfg(any(target_os = "macos", all(target_os = "ios", target_arch = "aarch64")))'.dependencies.gfx-backend-metal] +version = "0.2" +optional = true + +[target.'cfg(windows)'.dependencies.gfx-backend-dx11] +version = "0.2" +optional = true + +[target.'cfg(windows)'.dependencies.gfx-backend-dx12] +version = "0.2" +optional = true diff --git a/stockton-render/src/lib.rs b/stockton-render/src/lib.rs new file mode 100644 index 0000000..d399a76 --- /dev/null +++ b/stockton-render/src/lib.rs @@ -0,0 +1,66 @@ +// Copyright (C) 2019 Oscar Shrimpton + +// This program is free software: you can redistribute it and/or modify it +// under the terms of the GNU General Public License as published by the Free +// Software Foundation, either version 3 of the License, or (at your option) +// any later version. + +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +// more details. + +// You should have received a copy of the GNU General Public License along +// with this program. If not, see <http://www.gnu.org/licenses/>. + +//! Renders a world to a window. +//! +//! You'll need to pick a backend using features. You should only pick one. +//! On Linux & Windows, you should use vulkan. +//! On Mac, you should use `metal`. +//! If your targetting machines without Vulkan, OpenGL or dx11/dx12 is preferred. +//! `empty` is used for testing +#[cfg(feature = "dx11")] +extern crate gfx_backend_dx11 as back; + +#[cfg(feature = "dx12")] +extern crate gfx_backend_dx12 as back; + +#[cfg(feature = "gl")] +extern crate gfx_backend_gl as back; + +#[cfg(feature = "metal")] +extern crate gfx_backend_metal as back; + +#[cfg(feature = "vulkan")] +extern crate gfx_backend_vulkan as back; + +#[cfg(feature = "empty")] +extern crate gfx_backend_empty as back; + +extern crate gfx_hal as hal; +extern crate stockton_types; +extern crate winit; + +use stockton_types::World; + +use winit::Window; + +use back::Instance; + +use std::sync::{Arc, RwLock}; + +pub struct Renderer<'a> { + world: Arc<RwLock<World<'a>>>, + instance: Instance, + window: &'a Window, +} + +impl<'a> Renderer<'a> { + pub fn new(world: Arc<RwLock<World<'a>>>, window: &'a Window) -> Renderer<'a> { + let instance = Instance::create("stockton", 1); + Renderer { + world, window, instance + } + } +} |