Skip to content

Commit 46566dd

Browse files
committed
[update] push constants example.
1 parent 7ba90aa commit 46566dd

2 files changed

Lines changed: 44 additions & 23 deletions

File tree

lambda/examples/push_constants.rs

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,22 @@ use lambda::{
33
component::Component,
44
render::{
55
command::RenderCommand,
6-
pipeline::{
7-
RenderPipeline,
8-
RenderPipelineBuilder,
9-
},
10-
render_pass::{
11-
RenderPass,
12-
RenderPassBuilder,
13-
},
6+
mesh::MeshBuilder,
7+
pipeline::RenderPipelineBuilder,
8+
render_pass::RenderPassBuilder,
149
shader::{
1510
Shader,
1611
ShaderBuilder,
1712
},
13+
vertex::VertexBuilder,
1814
viewport,
1915
ResourceId,
2016
},
2117
runtime::start_runtime,
2218
},
2319
math::{
24-
matrix::{
25-
self,
26-
Matrix,
27-
},
20+
matrix,
21+
matrix::Matrix,
2822
vector::Vector,
2923
},
3024
runtimes::GenericRuntimeBuilder,
@@ -96,6 +90,30 @@ impl Component for PushConstantsExample {
9690

9791
self.render_pass = Some(render_context.attach_render_pass(render_pass));
9892
self.render_pipeline = Some(render_context.attach_pipeline(pipeline));
93+
94+
// Create triangle mesh.
95+
let vertices = [
96+
VertexBuilder::new()
97+
.with_position([0.0, 0.5, 0.0])
98+
.with_normal([0.0, 0.0, 0.0])
99+
.with_color([1.0, 0.0, 0.0])
100+
.build(),
101+
VertexBuilder::new()
102+
.with_position([-0.5, -0.5, 0.0])
103+
.with_normal([0.0, 0.0, 0.0])
104+
.with_color([0.0, 1.0, 0.0])
105+
.build(),
106+
VertexBuilder::new()
107+
.with_position([0.5, -0.5, 0.0])
108+
.with_normal([0.0, 0.0, 0.0])
109+
.with_color([0.0, 0.0, 1.0])
110+
.build(),
111+
];
112+
113+
let mut mesh_builder = MeshBuilder::new();
114+
vertices.iter().for_each(|vertex| {
115+
mesh_builder.with_vertex(vertex.clone());
116+
});
99117
}
100118

101119
fn on_detach(
@@ -201,14 +219,11 @@ impl Default for PushConstantsExample {
201219
}
202220

203221
fn main() {
204-
let runtime = GenericRuntimeBuilder::new("Multiple Triangles Demo")
205-
.with_renderer_configured_as(move |render_context_builder| {
206-
return render_context_builder.with_render_timeout(1_000_000_000);
207-
})
222+
let runtime = GenericRuntimeBuilder::new("3D Push Constants Example")
208223
.with_window_configured_as(move |window_builder| {
209224
return window_builder
210225
.with_dimensions(800, 600)
211-
.with_name("Triangles");
226+
.with_name("3D Push Constants Example");
212227
})
213228
.with_component(move |runtime, triangles: PushConstantsExample| {
214229
return (runtime, triangles);

lambda/src/core/render/mesh.rs

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,35 @@
11
use super::vertex::Vertex;
22

3+
// ---------------------------------- Mesh ------------------------------------
4+
5+
/// Collection of vertices and indices that define a 3D object.
36
#[derive(Clone, Debug)]
47
pub struct Mesh {
58
vertices: Vec<Vertex>,
6-
indices: Vec<usize>,
9+
indices: Vec<u32>,
710
}
811

12+
// ------------------------------ MeshBuilder ---------------------------------
13+
14+
/// Construction for a mesh.
915
#[derive(Clone, Debug)]
1016
pub struct MeshBuilder {
11-
size: usize,
17+
capacity: usize,
1218
vertices: Vec<Vertex>,
13-
indices: Vec<usize>,
19+
indices: Vec<u32>,
1420
}
1521

1622
impl MeshBuilder {
1723
pub fn new() -> Self {
1824
return Self {
19-
size: 0,
25+
capacity: 0,
2026
vertices: vec![],
2127
indices: vec![],
2228
};
2329
}
2430

2531
pub fn with_capacity(&mut self, size: usize) -> &mut Self {
26-
self.size = size;
32+
self.capacity = size;
2733
return self;
2834
}
2935

@@ -49,7 +55,7 @@ mod tests {
4955
assert_eq!(mesh.vertices.len(), 0);
5056
assert_eq!(mesh.indices.len(), 0);
5157

52-
let mut mesh = mesh
58+
let mesh = mesh
5359
.with_capacity(10)
5460
.with_vertex(crate::core::render::vertex::VertexBuilder::new().build())
5561
.build();

0 commit comments

Comments
 (0)