Bläddra i källkod

view matrix without inverse, just do the actions in the 'inverse' order instead

Karl Zylinski 6 månader sedan
förälder
incheckning
43e7773501
2 ändrade filer med 6 tillägg och 6 borttagningar
  1. 5 5
      karl2d.odin
  2. 1 1
      window_win32.odin

+ 5 - 5
karl2d.odin

@@ -695,12 +695,12 @@ set_camera :: proc(camera: Maybe(Camera)) {
 	s.proj_matrix = make_default_projection(s.width, s.height)
 
 	if c, c_ok := camera.?; c_ok {
-		origin_trans := linalg.matrix4_translate(vec3_from_vec2(-c.origin))
-		translate := linalg.matrix4_translate(vec3_from_vec2(c.target))
-		scale := linalg.matrix4_scale(Vec3{1/c.zoom, 1/c.zoom, 1})
+		origin_trans := linalg.matrix4_translate(vec3_from_vec2(c.origin))
 		rot := linalg.matrix4_rotate_f32(c.rotation * math.RAD_PER_DEG, {0, 0, 1})
-		camera_matrix := translate * scale * rot * origin_trans
-		s.view_matrix = linalg.inverse(camera_matrix)
+		translate := linalg.matrix4_translate(vec3_from_vec2(-c.target))
+		scale := linalg.matrix4_scale(Vec3{c.zoom, c.zoom, 1})
+		camera_matrix := origin_trans * scale * rot *  translate 
+		s.view_matrix = camera_matrix
 	} else {
 		s.view_matrix = 1
 	}

+ 1 - 1
window_win32.odin

@@ -144,7 +144,7 @@ window_proc :: proc "stdcall" (hwnd: win32.HWND, msg: win32.UINT, wparam: win32.
 		return 0
 
 	case win32.WM_MOUSEWHEEL:
-		delta := -f32(win32.GET_WHEEL_DELTA_WPARAM(wparam))/win32.WHEEL_DELTA
+		delta := f32(win32.GET_WHEEL_DELTA_WPARAM(wparam))/win32.WHEEL_DELTA
 
 		append(&s.events, Window_Event_Mouse_Wheel {
 			delta = delta,