feat: load and draw lunar terrain with extended far plane in perspective matrix

This commit is contained in:
2025-10-02 00:42:56 +02:00
parent fcb365bcf5
commit f4b85afff8

View File

@@ -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 pointparticles
let transform_particles = projection * view * glm::identity();
gl::UniformMatrix4fv(transform_loc, 1, gl::FALSE, transform_particles.as_ptr());