Merge pull request #433 from erwanvivien/explain-objmodel

feat: added more information on obj_model setup
pull/447/head
sotrh 1 year ago committed by GitHub
commit c17e90d926
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -62,6 +62,8 @@ impl Vertex for ModelVertex {
This is basically the same as the original `VertexBufferLayout`, but we added a `VertexAttribute` for the `normal`. Remove the `Vertex` struct in `lib.rs` as we won't need it anymore, and use our new `Vertex` from `model` for the `RenderPipeline`. This is basically the same as the original `VertexBufferLayout`, but we added a `VertexAttribute` for the `normal`. Remove the `Vertex` struct in `lib.rs` as we won't need it anymore, and use our new `Vertex` from `model` for the `RenderPipeline`.
We will also remove our homemade `vertex_buffer`, `index_buffer` and `num_indices`.
```rust ```rust
let render_pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor { let render_pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor {
// ... // ...
@ -417,6 +419,8 @@ where
We could have put these methods in an `impl Model`, but I felt it made more sense to have the `RenderPass` do all the rendering, as that's kind of its job. This does mean we have to import `DrawModel` when we go to render though. We could have put these methods in an `impl Model`, but I felt it made more sense to have the `RenderPass` do all the rendering, as that's kind of its job. This does mean we have to import `DrawModel` when we go to render though.
When we removed `vertex_buffer`, etc. we also removed their render_pass setup.
```rust ```rust
// lib.rs // lib.rs
render_pass.set_vertex_buffer(1, self.instance_buffer.slice(..)); render_pass.set_vertex_buffer(1, self.instance_buffer.slice(..));
@ -431,12 +435,10 @@ render_pass.draw_mesh_instanced(&self.obj_model.meshes[0], 0..self.instances.len
Before that though we need to actually load the model and save it to `State`. Put the following in `State::new()`. Before that though we need to actually load the model and save it to `State`. Put the following in `State::new()`.
```rust ```rust
let obj_model = resources::load_model( let obj_model =
"cube.obj", resources::load_model("cube.obj", &device, &queue, &texture_bind_group_layout)
&device, .await
&queue, .unwrap();
&texture_bind_group_layout,
).await.unwrap();
``` ```
Our new model is a bit bigger than our previous one so we're gonna need to adjust the spacing on our instances a bit. Our new model is a bit bigger than our previous one so we're gonna need to adjust the spacing on our instances a bit.

Loading…
Cancel
Save