pub const fn vec2(x: f32, y: f32) -> Vec2
Expand description
Creates a 2-dimensional vector.
Examples found in repository?
examples/tree.rs (line 32)
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
async fn main() {
let camera = Camera2D {
zoom: vec2(1., 1.),
target: vec2(0.0, 0.5),
..Default::default()
};
set_camera(&camera);
loop {
clear_background(LIGHTGRAY);
draw_circle(0., 0., 0.03, DARKGRAY);
tree(unsafe { get_internal_gl().quad_gl }, get_time(), 0, 1., 0.3);
next_frame().await
}
}
More examples
examples/camera.rs (line 11)
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
async fn main() {
loop {
clear_background(LIGHTGRAY);
// Render some primitives in camera space
set_camera(&Camera2D {
zoom: vec2(1., screen_width() / screen_height()),
..Default::default()
});
draw_line(-0.4, 0.4, -0.8, 0.9, 0.05, BLUE);
draw_rectangle(-0.3, 0.3, 0.2, 0.2, GREEN);
draw_circle(0., 0., 0.1, YELLOW);
// Back to screen space, render some text
set_default_camera();
draw_text("HELLO", 30.0, 200.0, 30.0, BLACK);
next_frame().await
}
}
examples/screen_texture.rs (line 27)
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
async fn main() {
let texture: Texture2D = load_texture("examples/chess.png").await.unwrap();
let lens_material = load_material(
ShaderSource::Glsl {
vertex: LENS_VERTEX_SHADER,
fragment: LENS_FRAGMENT_SHADER,
},
MaterialParams {
uniforms: vec![UniformDesc::new("Center", UniformType::Float2)],
..Default::default()
},
)
.unwrap();
loop {
clear_background(WHITE);
draw_texture_ex(
&texture,
0.0,
0.0,
WHITE,
DrawTextureParams {
dest_size: Some(vec2(screen_width(), screen_height())),
..Default::default()
},
);
let lens_center = mouse_position();
lens_material.set_uniform("Center", lens_center);
gl_use_material(&lens_material);
draw_circle(lens_center.0, lens_center.1, 250.0, RED);
gl_use_default_material();
next_frame().await
}
}
examples/exit_dialog.rs (line 19)
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
async fn main() {
prevent_quit();
let mut show_exit_dialog = false;
let mut user_decided_to_exit = false;
loop {
clear_background(GRAY);
if is_quit_requested() {
show_exit_dialog = true;
}
if show_exit_dialog {
let dialog_size = vec2(200., 70.);
let screen_size = vec2(screen_width(), screen_height());
let dialog_position = screen_size / 2. - dialog_size / 2.;
Window::new(hash!(), dialog_position, dialog_size).ui(&mut *root_ui(), |ui| {
ui.label(None, "Do you really want to quit?");
ui.separator();
ui.same_line(60.);
if ui.button(None, "Yes") {
user_decided_to_exit = true;
}
ui.same_line(120.);
if ui.button(None, "No") {
show_exit_dialog = false;
}
});
}
if user_decided_to_exit {
break;
}
next_frame().await
}
}
examples/3d.rs (line 26)
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
async fn main() {
let rust_logo = load_texture("examples/rust.png").await.unwrap();
let ferris = load_texture("examples/ferris.png").await.unwrap();
loop {
clear_background(LIGHTGRAY);
// Going 3d!
set_camera(&Camera3D {
position: vec3(-20., 15., 0.),
up: vec3(0., 1., 0.),
target: vec3(0., 0., 0.),
..Default::default()
});
draw_grid(20, 1., BLACK, GRAY);
draw_cube_wires(vec3(0., 1., -6.), vec3(2., 2., 2.), DARKGREEN);
draw_cube_wires(vec3(0., 1., 6.), vec3(2., 2., 2.), DARKBLUE);
draw_cube_wires(vec3(2., 1., 2.), vec3(2., 2., 2.), YELLOW);
draw_plane(vec3(-8., 0., -8.), vec2(5., 5.), Some(&ferris), WHITE);
draw_cube(
vec3(-5., 1., -2.),
vec3(2., 2., 2.),
Some(&rust_logo),
WHITE,
);
draw_cube(vec3(-5., 1., 2.), vec3(2., 2., 2.), Some(&ferris), WHITE);
draw_cube(vec3(2., 0., -2.), vec3(0.4, 0.4, 0.4), None, BLACK);
draw_sphere(vec3(-8., 0., 0.), 1., None, BLUE);
// Back to screen space, render some text
set_default_camera();
draw_text("WELCOME TO 3D WORLD", 10.0, 20.0, 30.0, BLACK);
next_frame().await
}
}
examples/post_processing.rs (line 22)
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
async fn main() {
let render_target = render_target(320, 150);
render_target.texture.set_filter(FilterMode::Nearest);
let material = load_material(
ShaderSource::Glsl {
vertex: CRT_VERTEX_SHADER,
fragment: CRT_FRAGMENT_SHADER,
},
Default::default(),
)
.unwrap();
loop {
// drawing to the texture
// 0..100, 0..100 camera
set_camera(&Camera2D {
zoom: vec2(0.01, 0.01),
target: vec2(0.0, 0.0),
render_target: Some(render_target.clone()),
..Default::default()
});
clear_background(LIGHTGRAY);
draw_line(-30.0, 45.0, 30.0, 45.0, 3.0, BLUE);
draw_circle(-45.0, -35.0, 20.0, YELLOW);
draw_circle(45.0, -35.0, 20.0, GREEN);
// drawing to the screen
set_default_camera();
clear_background(WHITE);
gl_use_material(&material);
draw_texture_ex(
&render_target.texture,
0.,
0.,
WHITE,
DrawTextureParams {
dest_size: Some(vec2(screen_width(), screen_height())),
..Default::default()
},
);
gl_use_default_material();
next_frame().await;
}
}