-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrender_resources.rs
64 lines (58 loc) · 1.97 KB
/
render_resources.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//! This example shows demonstrates tracking memory usage for render resources
//! like meshes, images, and materials.
//!
//! Adapted from the official Bevy `many_cubes` example.
use bevy::{
prelude::*,
render::{mesh::GpuMesh, texture::GpuImage},
};
use bevy_datasize::prelude::*;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugins(DefaultMemoryUsagePlugins)
.add_startup_system(setup)
.add_system(print_sizes)
.run();
}
fn setup(
asset_server: Res<AssetServer>,
mut commands: Commands,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<StandardMaterial>>,
) {
const WIDTH: usize = 10;
const HEIGHT: usize = 10;
let texture = asset_server.load("grass_0_0.png");
for x in 0..WIDTH {
for y in 0..HEIGHT {
// cube
commands.spawn_bundle(PbrBundle {
mesh: meshes.add(Mesh::from(shape::Cube { size: 1.0 })),
material: materials.add(StandardMaterial {
base_color_texture: Some(texture.clone()),
..Default::default()
}),
transform: Transform::from_xyz((x as f32) * 2.0, (y as f32) * 2.0, 0.0),
..Default::default()
});
}
}
// camera
commands.spawn_bundle(PerspectiveCameraBundle {
transform: Transform::from_xyz(80.0, 80.0, 300.0),
..Default::default()
});
}
fn print_sizes(memory_usage: Res<MemoryUsage>) {
let mesh_stats = memory_usage.get_stats::<Mesh>().unwrap();
let gpu_mesh_stats = memory_usage.get_stats::<GpuMesh>().unwrap();
let image_stats = memory_usage.get_stats::<Image>().unwrap();
let material_stats = memory_usage.get_stats::<StandardMaterial>().unwrap();
println!();
println!("Memory usage:");
println!("Meshes: {mesh_stats}");
println!("GPU Meshes: {gpu_mesh_stats}");
println!("Images: {image_stats}");
println!("Materials: {material_stats}");
}