feat: load and draw lunar terrain with extended far plane in perspective matrix
This commit is contained in:
19
src/main.rs
19
src/main.rs
@@ -14,6 +14,7 @@ use std::{mem, os::raw::c_void, ptr};
|
||||
|
||||
mod shader;
|
||||
mod util;
|
||||
mod mesh;
|
||||
|
||||
use glutin::event::{
|
||||
DeviceEvent,
|
||||
@@ -181,6 +182,10 @@ fn main() {
|
||||
}
|
||||
|
||||
// == // Set up your VAO around here
|
||||
let terrain_mesh = mesh::Terrain::load("resources/lunarsurface.obj");
|
||||
let terrain_vao = unsafe {
|
||||
create_vao(&terrain_mesh.vertices, &terrain_mesh.colors, &terrain_mesh.indices)
|
||||
};
|
||||
|
||||
let vertices = vec![
|
||||
// triangle 1
|
||||
@@ -380,7 +385,7 @@ fn main() {
|
||||
let view: glm::Mat4 = view_rot_x * view_rot_y * view_translation;
|
||||
// build Projection matrix
|
||||
let projection: glm::Mat4 =
|
||||
glm::perspective(window_aspect_ratio, std::f32::consts::PI / 4.0, 1.0, 100.0);
|
||||
glm::perspective(window_aspect_ratio, std::f32::consts::PI / 4.0, 1.0, 1000.0);
|
||||
// final transform: Projection * View * Model
|
||||
let transform: glm::Mat4 = projection * view * model;
|
||||
gl::UniformMatrix4fv(transform_loc, 1, gl::FALSE, transform.as_ptr());
|
||||
@@ -392,6 +397,18 @@ fn main() {
|
||||
std::ptr::null(),
|
||||
);
|
||||
|
||||
// Draw the lunar terrain
|
||||
let model_terrain: glm::Mat4 = glm::identity();
|
||||
let transform_terrain: glm::Mat4 = projection * view * model_terrain;
|
||||
gl::UniformMatrix4fv(transform_loc, 1, gl::FALSE, transform_terrain.as_ptr());
|
||||
gl::BindVertexArray(terrain_vao);
|
||||
gl::DrawElements(
|
||||
gl::TRIANGLES,
|
||||
terrain_mesh.index_count,
|
||||
gl::UNSIGNED_INT,
|
||||
std::ptr::null(),
|
||||
);
|
||||
|
||||
// Draw point‐particles
|
||||
let transform_particles = projection * view * glm::identity();
|
||||
gl::UniformMatrix4fv(transform_loc, 1, gl::FALSE, transform_particles.as_ptr());
|
||||
|
||||
Reference in New Issue
Block a user