MCPcopy Create free account
hub / github.com/DavidPeicho/albedo / initialize

Function initialize

examples/example/mod.rs:26–108  ·  view source on GitHub ↗
(title: &str)

Source from the content-addressed store, hash-verified

24}
25
26pub async fn initialize<E>(title: &str) -> (EventLoop, App) {
27 let event_loop = winit::event_loop::EventLoopBuilder::with_user_event().build();
28 let mut builder = winit::window::WindowBuilder::new();
29 builder = builder.with_title(title);
30
31 let window = builder.build(&event_loop).unwrap();
32
33 #[cfg(target_arch = "wasm32")]
34 {
35 use wasm_bindgen::{prelude::*, JsCast};
36 use winit::platform::web::WindowExtWebSys;
37
38 let canvas = window.canvas();
39 // On wasm, append the canvas to the document body
40 web_sys::window()
41 .and_then(|win| win.document())
42 .and_then(|doc| doc.body())
43 .and_then(|body| body.append_child(&web_sys::Element::from(canvas)).ok())
44 .expect("couldn't append canvas to document body");
45 }
46
47 let dx12_shader_compiler = wgpu::util::dx12_shader_compiler_from_env().unwrap_or_default();
48 let gles_minor_version = wgpu::util::gles_minor_version_from_env().unwrap_or_default();
49
50 let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
51 backends: wgpu::Backends::PRIMARY,
52 dx12_shader_compiler,
53 gles_minor_version,
54 flags: wgpu::InstanceFlags::from_build_config().with_env(),
55 });
56 let surface = unsafe { instance.create_surface(&window) }.unwrap();
57 let adapter = instance
58 .request_adapter(&wgpu::RequestAdapterOptions {
59 power_preference: wgpu::PowerPreference::HighPerformance,
60 compatible_surface: Some(&surface),
61 force_fallback_adapter: false,
62 })
63 .await
64 .expect("No suitable GPU adapters found on the system!");
65
66 let optional_features: wgpu::Features = wgpu::Features::default();
67 let required_features: wgpu::Features =
68 wgpu::Features::TEXTURE_ADAPTER_SPECIFIC_FORMAT_FEATURES;
69
70 let adapter_features: wgpu::Features = wgpu::Features::default();
71 let needed_limits = wgpu::Limits {
72 max_storage_buffers_per_shader_stage: 8,
73 max_storage_buffer_binding_size: 256 * 1024 * 1024,
74 ..wgpu::Limits::default()
75 };
76 let trace_dir = std::env::var("WGPU_TRACE");
77
78 let (device, queue) = adapter
79 .request_device(
80 &wgpu::DeviceDescriptor {
81 label: None,
82 features: (optional_features & adapter_features) | required_features,
83 limits: needed_limits,

Callers

nothing calls this directly

Calls 1

buildMethod · 0.45

Tested by

no test coverage detected