Skip to content

Commit 65da240

Browse files
examples/vertex-buffers: Make the example more dynamic (mouse clicks add vertices)
1 parent 1f2f3ae commit 65da240

File tree

1 file changed

+21
-7
lines changed

1 file changed

+21
-7
lines changed

examples/vertex-buffers.rs

+21-7
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use sfml::{
22
graphics::{
33
Color, PrimitiveType, RenderTarget, RenderWindow, Vertex, VertexBuffer, VertexBufferUsage,
44
},
5-
window::{Event, Style},
5+
window::{mouse::Button, Event, Style},
66
SfResult,
77
};
88

@@ -15,23 +15,37 @@ fn main() -> SfResult<()> {
1515
)?;
1616
window.set_vertical_sync_enabled(true);
1717

18-
let mut vertex_buffer =
19-
VertexBuffer::new(PrimitiveType::LINE_STRIP, 6, VertexBufferUsage::STATIC)?;
20-
21-
let vertices = [
18+
let mut vertices = vec![
2219
Vertex::with_pos_color((20.0, 30.0).into(), Color::GREEN),
2320
Vertex::with_pos_color((30.0, 30.0).into(), Color::GREEN),
2421
Vertex::with_pos_color((40.0, 40.0).into(), Color::GREEN),
2522
Vertex::with_pos_color((50.0, 50.0).into(), Color::GREEN),
2623
Vertex::with_pos_color((60.0, 60.0).into(), Color::GREEN),
2724
Vertex::with_pos_color((50.0, 80.0).into(), Color::GREEN),
2825
];
26+
let mut vertex_buffer = VertexBuffer::new(
27+
PrimitiveType::LINE_STRIP,
28+
vertices.len(),
29+
VertexBufferUsage::DYNAMIC,
30+
)?;
2931
vertex_buffer.update(&vertices, 0)?;
3032

3133
'mainloop: loop {
3234
while let Some(e) = window.poll_event() {
33-
if e == Event::Closed {
34-
break 'mainloop;
35+
match e {
36+
Event::Closed => break 'mainloop,
37+
Event::MouseButtonPressed {
38+
button: Button::Left,
39+
x,
40+
y,
41+
} => {
42+
vertices.push(Vertex::with_pos_color(
43+
(x as f32, y as f32).into(),
44+
Color::GREEN,
45+
));
46+
vertex_buffer.update(&vertices, 0)?;
47+
}
48+
_ => {}
3549
}
3650
}
3751
// Clear the window

0 commit comments

Comments
 (0)