forked from deltaphc/raylib-rs
-
Notifications
You must be signed in to change notification settings - Fork 69
Expand file tree
/
Copy pathshader_multisample.rs
More file actions
60 lines (51 loc) · 2.22 KB
/
shader_multisample.rs
File metadata and controls
60 lines (51 loc) · 2.22 KB
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
use raylib::prelude::*;
pub fn main() {
let (mut rl, thread) = raylib::init().width(800).height(450).build();
let im_red = Image::gen_image_color(800, 450, Color::new(255, 0, 0, 255));
let tex_red = rl.load_texture_from_image(&thread, &im_red).unwrap();
let im_blue = Image::gen_image_color(800, 450, Color::new(0, 0, 255, 255));
let tex_blue = rl.load_texture_from_image(&thread, &im_blue).unwrap();
let mut shader = rl.load_shader(&thread, None, Some("static/shader/color_mix.fs"));
// Get an additional sampler2D location to be enabled on drawing
let tex_blue_loc = shader.get_shader_location("texture1");
// Get shader uniform for divider
let divider_loc = shader.get_shader_location("divider");
let mut divider_value = 0.5;
rl.set_target_fps(60);
while !rl.window_should_close() {
if rl.is_key_down(KeyboardKey::KEY_RIGHT) {
divider_value += 0.01;
}
if rl.is_key_down(KeyboardKey::KEY_LEFT) {
divider_value -= 0.01;
}
if divider_value < 0.0 {
divider_value = 0.0;
} else if divider_value > 1.0 {
divider_value = 1.0;
};
rl.draw(&thread, |mut d| {
shader.set_shader_value(divider_loc, divider_value);
shader.set_shader_value_texture(tex_blue_loc, &tex_blue);
{
let mut d = d.begin_shader_mode(&mut shader);
d.clear_background(Color::WHITE);
d.draw_texture(&tex_red, 0, 0, Color::WHITE);
}
//d.draw_shader_mode(&mut shader, |mut d| {
// // note(jest): setting shader values must be done before starting shader modes or else borrow issues
// shader.set_shader_value(divider_loc, divider_value);
// shader.set_shader_value_texture(tex_blue_loc, &tex_blue);
// d.clear_background(Color::WHITE);
// d.draw_texture(&tex_red, 0, 0, Color::WHITE);
//});
d.draw_text(
"Use KEY_LEFT/KEY_RIGHT to move texture mixing in shader!",
80,
d.get_screen_height() - 40,
20,
Color::RAYWHITE,
);
})
}
}