Initialize wgpu
We only enable the `vulkan` feature for now.
This commit is contained in:
parent
63294088ad
commit
8bb33cd5a0
4 changed files with 47 additions and 1 deletions
|
|
@ -22,6 +22,9 @@ members = [
|
||||||
"examples/tour",
|
"examples/tour",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[features]
|
||||||
|
vulkan = ["iced_wgpu/vulkan"]
|
||||||
|
|
||||||
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
||||||
iced_winit = { version = "0.1.0-alpha", path = "winit" }
|
iced_winit = { version = "0.1.0-alpha", path = "winit" }
|
||||||
iced_wgpu = { version = "0.1.0-alpha", path = "wgpu" }
|
iced_wgpu = { version = "0.1.0-alpha", path = "wgpu" }
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,8 @@ pub trait UserInterface {
|
||||||
.build(&event_loop)
|
.build(&event_loop)
|
||||||
.expect("Open window");
|
.expect("Open window");
|
||||||
|
|
||||||
|
let renderer = Renderer::new(&window);
|
||||||
|
|
||||||
event_loop.run(move |event, _, control_flow| match event {
|
event_loop.run(move |event, _, control_flow| match event {
|
||||||
Event::EventsCleared => {
|
Event::EventsCleared => {
|
||||||
window.request_redraw();
|
window.request_redraw();
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,10 @@ description = "A wgpu renderer for Iced"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://github.com/hecrj/iced"
|
repository = "https://github.com/hecrj/iced"
|
||||||
|
|
||||||
|
[features]
|
||||||
|
vulkan = ["wgpu/vulkan"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
iced_native = { version = "0.1.0-alpha", path = "../native" }
|
iced_native = { version = "0.1.0-alpha", path = "../native" }
|
||||||
wgpu = "0.3"
|
wgpu = "0.3"
|
||||||
|
raw-window-handle = "0.1"
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,44 @@ use iced_native::{
|
||||||
Style, Text,
|
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 {
|
impl text::Renderer for Renderer {
|
||||||
fn node(&self, _text: &Text) -> Node {
|
fn node(&self, _text: &Text) -> Node {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue