Initialize wgpu

We only enable the `vulkan` feature for now.
This commit is contained in:
Héctor Ramón Jiménez 2019-10-03 00:23:08 +02:00
parent 63294088ad
commit 8bb33cd5a0
4 changed files with 47 additions and 1 deletions

View file

@ -22,6 +22,9 @@ members = [
"examples/tour",
]
[features]
vulkan = ["iced_wgpu/vulkan"]
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
iced_winit = { version = "0.1.0-alpha", path = "winit" }
iced_wgpu = { version = "0.1.0-alpha", path = "wgpu" }

View file

@ -32,6 +32,8 @@ pub trait UserInterface {
.build(&event_loop)
.expect("Open window");
let renderer = Renderer::new(&window);
event_loop.run(move |event, _, control_flow| match event {
Event::EventsCleared => {
window.request_redraw();

View file

@ -7,6 +7,10 @@ description = "A wgpu renderer for Iced"
license = "MIT"
repository = "https://github.com/hecrj/iced"
[features]
vulkan = ["wgpu/vulkan"]
[dependencies]
iced_native = { version = "0.1.0-alpha", path = "../native" }
wgpu = "0.3"
raw-window-handle = "0.1"

View file

@ -4,7 +4,44 @@ use iced_native::{
Style, Text,
};
pub struct Renderer;
use raw_window_handle::HasRawWindowHandle;
use wgpu::{
Adapter, Device, DeviceDescriptor, Extensions, Instance, Limits,
PowerPreference, RequestAdapterOptions, Surface,
};
pub struct Renderer {
instance: Instance,
surface: Surface,
adapter: Adapter,
device: Device,
}
impl Renderer {
pub fn new<W: HasRawWindowHandle>(window: &W) -> Self {
let instance = Instance::new();
let adapter = instance.request_adapter(&RequestAdapterOptions {
power_preference: PowerPreference::LowPower,
});
let device = adapter.request_device(&DeviceDescriptor {
extensions: Extensions {
anisotropic_filtering: false,
},
limits: Limits { max_bind_groups: 1 },
});
let surface = instance.create_surface(window.raw_window_handle());
Self {
instance,
surface,
adapter,
device,
}
}
}
impl text::Renderer for Renderer {
fn node(&self, _text: &Text) -> Node {