pub fn query_gpu_adapter(window: Option<&Window>) -> Vec<GPUAdapter>
Expand description
Queries the available GPU’s GPUAdapter.
This is useful for checking the available GPU adapters on the system and the supported
graphics APIs, allowing you to choose the best GPU and graphics API for your application.
This function can be called from any thread.
Examples found in repository?
examples/gpu_adapter.rs (line 12)
5fn main() {
6 let mut runner = est_render::runner::new().expect("Failed to create runner");
7 let mut window = runner
8 .create_window("Engine Example", Point2::new(800, 600))
9 .build()
10 .expect("Failed to create window");
11
12 let adapters = est_render::gpu::query_gpu_adapter(Some(&window));
13 if adapters.is_empty() {
14 eprintln!("No GPU adapters found. Exiting.");
15 return;
16 }
17
18 let selected_adapter = adapters
19 .iter()
20 .find(|adapter| adapter.backend_enum == AdapterBackend::Vulkan)
21 .cloned();
22
23 if selected_adapter.is_none() {
24 eprintln!("No suitable GPU adapter found. Exiting.");
25 return;
26 }
27
28 let adapter = selected_adapter.unwrap();
29 let mut gpu = est_render::gpu::new(Some(&mut window))
30 .set_adapter(&adapter)
31 .build()
32 .expect("Failed to create GPU");
33
34 while runner.pump_events(None) {
35 for event in runner.get_events() {
36 match event {
37 Event::WindowClosed { .. } => {
38 return;
39 }
40 _ => {}
41 }
42 }
43
44 if let Ok(mut cmd) = gpu.begin_command() {
45 if let Ok(mut rp) = cmd.begin_renderpass() {
46 rp.set_clear_color(Color::LIGHTBLUE);
47 }
48 }
49 }
50}