Perspective transforms barely standing up!
This commit is contained in:
parent
93ae7d3548
commit
8166de112c
|
@ -55,9 +55,17 @@ const MAIN_FRAMEBUFFER_HEIGHT: u32 = 800;
|
||||||
const FILL_COLORS_TEXTURE_WIDTH: u32 = 256;
|
const FILL_COLORS_TEXTURE_WIDTH: u32 = 256;
|
||||||
const FILL_COLORS_TEXTURE_HEIGHT: u32 = 256;
|
const FILL_COLORS_TEXTURE_HEIGHT: u32 = 256;
|
||||||
|
|
||||||
|
const MOUSELOOK_ROTATION_SPEED: f32 = 0.01;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let options = Options::get();
|
let options = Options::get();
|
||||||
let base_scene = load_scene(&options);
|
|
||||||
|
let mut base_scene = load_scene(&options);
|
||||||
|
|
||||||
|
let mut base_transform = Transform2DF32::from_scale(&Point2DF32::splat(1.0 / 800.0));
|
||||||
|
base_transform =
|
||||||
|
base_transform.pre_mul(&Transform2DF32::from_translation(&Point2DF32::splat(-1.0)));
|
||||||
|
base_scene.transform(&base_transform);
|
||||||
|
|
||||||
let sdl_context = sdl2::init().unwrap();
|
let sdl_context = sdl2::init().unwrap();
|
||||||
let sdl_video = sdl_context.video().unwrap();
|
let sdl_video = sdl_context.video().unwrap();
|
||||||
|
@ -84,13 +92,21 @@ fn main() {
|
||||||
|
|
||||||
//let mut scale = 1.0;
|
//let mut scale = 1.0;
|
||||||
//let mut theta = 0.0;
|
//let mut theta = 0.0;
|
||||||
|
let mut camera_position = [0.0, 0.0, 3.0];
|
||||||
|
let (mut camera_roll, mut camera_pitch, mut camera_yaw) = (0.0, 0.0, 0.0);
|
||||||
|
|
||||||
let mut transform = Transform3DF32::from_perspective(FRAC_PI_4, 4.0 / 3.0, 0.01, 100.0);
|
|
||||||
transform = transform.post_mul(&Transform3DF32::from_translation(0.0, 0.0, -6.0));
|
|
||||||
let window_size = Size2D::new(MAIN_FRAMEBUFFER_WIDTH, MAIN_FRAMEBUFFER_HEIGHT);
|
let window_size = Size2D::new(MAIN_FRAMEBUFFER_WIDTH, MAIN_FRAMEBUFFER_HEIGHT);
|
||||||
let perspective = Perspective::new(&transform, &window_size);
|
|
||||||
|
|
||||||
while !exit {
|
while !exit {
|
||||||
|
let mut transform = Transform3DF32::from_perspective(FRAC_PI_4, 4.0 / 3.0, 0.01, 100.0);
|
||||||
|
transform = transform.post_mul(&Transform3DF32::from_rotation(camera_roll,
|
||||||
|
camera_pitch,
|
||||||
|
camera_yaw));
|
||||||
|
transform = transform.post_mul(&Transform3DF32::from_translation(-camera_position[0],
|
||||||
|
-camera_position[1],
|
||||||
|
-camera_position[2]));
|
||||||
|
let perspective = Perspective::new(&transform, &window_size);
|
||||||
|
|
||||||
let mut scene = base_scene.clone();
|
let mut scene = base_scene.clone();
|
||||||
scene.apply_perspective(&perspective);
|
scene.apply_perspective(&perspective);
|
||||||
//scene.transform(&Transform2DF32::from_rotation(theta));
|
//scene.transform(&Transform2DF32::from_rotation(theta));
|
||||||
|
@ -114,6 +130,13 @@ fn main() {
|
||||||
Event::Quit { .. } | Event::KeyDown { keycode: Some(Keycode::Escape), .. } => {
|
Event::Quit { .. } | Event::KeyDown { keycode: Some(Keycode::Escape), .. } => {
|
||||||
exit = true;
|
exit = true;
|
||||||
}
|
}
|
||||||
|
Event::MouseMotion { xrel, yrel, .. } => {
|
||||||
|
camera_yaw += xrel as f32 * MOUSELOOK_ROTATION_SPEED;
|
||||||
|
camera_pitch += yrel as f32 * MOUSELOOK_ROTATION_SPEED;
|
||||||
|
}
|
||||||
|
/*Event::KeyDown { keycode: Some(Keycode::W), .. } => {
|
||||||
|
|
||||||
|
}*/
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,6 +49,14 @@ impl Transform2DF32 {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn from_translation(vector: &Point2DF32) -> Transform2DF32 {
|
||||||
|
Transform2DF32 {
|
||||||
|
matrix: F32x4::new(1.0, 0.0, 0.0, 1.0),
|
||||||
|
vector: *vector,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn row_major(m11: f32, m12: f32, m21: f32, m22: f32, m31: f32, m32: f32)
|
pub fn row_major(m11: f32, m12: f32, m21: f32, m22: f32, m31: f32, m32: f32)
|
||||||
-> Transform2DF32 {
|
-> Transform2DF32 {
|
||||||
|
|
Loading…
Reference in New Issue