Damien Lespiau
ecc5c96aeb
Initialize the inverse matrix in invert_matrix_3d()
...
Contrary to the other inversion functions, invert_matrix_3d() does not
initialize the inverse to the identity and then only touches the
elements it cares about. Problem is the ww component is left alone,
which makes everything go to a black hole when using an inverse matrix
as the transform matrix of a framebuffer.
This is how cameras are typically implemented, they have a transform
and the framebuffer matrix stack is initialized with the inverse
of that transform. A gdb session gives away what happens:
The camera model view matrix, slightly rotation around the X axis:
camera mv 1.000000 0.000000 0.000000 0.000000
camera mv 0.000000 0.984808 -0.173648 0.000000
camera mv 0.000000 0.173648 0.984808 10.000000
camera mv 0.000000 0.000000 0.000000 1.000000
Breakpoint 5, invert_matrix_3d (matrix=0x8056b58) at ./cogl-matrix.c:671
671 const float *in = (float *)matrix;
(gdb) p *matrix
$1 = {xx = 1, yx = 0, zx = 0, wx = 0, xy = 0, yy = 0.98480773,
zy = 0.173648164, wy = 0, xz = 0, yz = -0.173648164, zz = 0.98480773,
wz = 0, xw = 0, yw = 0, zw = 10, ww = 1, inv = {0 <repeats 16 times>},
type = 6, flags = 1030, _padding3 = 0}
(gdb) finish
Run till exit from #0 invert_matrix_3d (matrix=0x8056b58)
at ./cogl-matrix.c:671
0x00141ced in _cogl_matrix_update_inverse (matrix=0x8056b58)
at ./cogl-matrix.c:1123
1123 if (inv_mat_tab[matrix->type](matrix))
Value returned is $2 = 1
(gdb) p *matrix
$3 = {xx = 1, yx = 0, zx = 0, wx = 0, xy = 0, yy = 0.98480773,
zy = 0.173648164, wy = 0, xz = 0, yz = -0.173648164, zz = 0.98480773,
wz = 0, xw = 0, yw = 0, zw = 10, ww = 1, inv = {1, 0, 0, 0, 0, 0.98480773,
-0.173648164, 0, 0, 0.173648164, 0.98480773, 0, -0, -1.73648167,
-9.84807777, 0}, type = 6, flags = 1030, _padding3 = 0}
Reviewed-by: Robert Bragg <robert@linux.intel.com>
(cherry picked from commit 9a19ea0147eb316247c45cbba6bb70dec5b9be4c)
2012-08-06 14:27:45 +01:00
..
2012-08-06 14:27:45 +01:00
2012-08-06 14:27:45 +01:00
2012-08-06 14:27:38 +01:00
2012-08-06 14:27:44 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-03-09 16:09:13 +00:00
2011-09-09 15:06:31 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2011-05-06 12:12:08 +01:00
2011-09-09 15:06:31 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:44 +01:00
2012-08-06 14:27:39 +01:00
2011-05-16 14:31:31 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:43 +01:00
2012-08-06 14:27:40 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:40 +01:00
2012-08-06 14:27:40 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:41 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:40 +01:00
2012-08-06 14:27:40 +01:00
2011-12-06 18:51:57 +00:00
2012-08-06 14:27:39 +01:00
2011-11-01 15:55:53 +00:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2011-08-12 15:28:42 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:42 +01:00
2012-08-06 14:27:42 +01:00
2012-08-06 14:27:42 +01:00
2012-08-06 14:27:40 +01:00
2012-08-06 14:27:40 +01:00
2012-08-06 14:27:43 +01:00
2012-08-06 14:27:40 +01:00
2012-08-06 14:27:42 +01:00
2012-08-06 14:27:42 +01:00
2011-05-16 18:45:51 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:41 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2011-11-22 16:07:21 +00:00
2012-08-06 14:27:42 +01:00
2012-08-06 14:27:43 +01:00
2012-08-06 14:27:43 +01:00
2012-08-06 14:27:38 +01:00
2012-08-06 14:27:42 +01:00
2012-08-06 14:27:42 +01:00
2012-08-06 14:27:42 +01:00
2012-08-06 14:27:42 +01:00
2012-08-06 14:27:42 +01:00
2012-08-06 14:27:39 +01:00
2012-01-05 13:40:59 +00:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:42 +01:00
2012-08-06 14:27:42 +01:00
2012-08-06 14:27:39 +01:00
2011-05-16 14:31:31 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2011-05-16 14:31:31 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:40 +01:00
2012-08-06 14:27:40 +01:00
2012-04-11 15:44:58 +01:00
2012-02-08 17:00:25 +00:00
2012-08-06 14:27:40 +01:00
2012-08-06 14:27:40 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:40 +01:00
2012-08-06 14:27:43 +01:00
2012-08-06 14:27:43 +01:00
2012-08-06 14:27:45 +01:00
2012-08-06 14:27:43 +01:00
2012-08-06 14:27:40 +01:00
2012-08-06 14:27:41 +01:00
2012-08-06 14:27:39 +01:00
2012-02-14 20:42:10 +00:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-02-20 23:16:37 +00:00
2011-06-14 12:14:02 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2011-11-01 12:03:02 +00:00
2012-08-06 14:27:42 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2011-05-16 13:28:17 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:38 +01:00
2012-03-06 18:45:44 +00:00
2012-08-06 14:27:39 +01:00
2011-07-13 12:30:07 +01:00
2012-08-06 14:27:39 +01:00
2011-07-13 12:30:07 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:41 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:40 +01:00
2012-08-06 14:27:42 +01:00
2012-08-06 14:27:40 +01:00
2011-12-06 19:02:06 +00:00
2012-08-06 14:27:40 +01:00
2011-12-06 18:51:57 +00:00
2012-08-06 14:27:40 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:40 +01:00
2012-08-06 14:27:40 +01:00
2012-08-06 14:27:45 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2011-11-01 12:02:59 +00:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2011-05-16 14:11:47 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:43 +01:00
2011-07-01 17:52:55 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:43 +01:00
2012-08-06 14:27:43 +01:00
2012-08-06 14:27:41 +01:00
2012-08-06 14:27:41 +01:00
2012-08-06 14:27:44 +01:00
2012-08-06 14:27:44 +01:00
2012-02-20 23:12:45 +00:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-01-27 17:18:32 +00:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-01-27 17:18:32 +00:00
2012-08-06 14:27:44 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:44 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:44 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:44 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:40 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:43 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:43 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:44 +01:00
2012-08-06 14:27:40 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-03-20 14:26:44 +00:00
2012-03-05 20:23:54 +00:00
2012-03-20 14:26:44 +00:00
2011-06-30 14:33:13 +01:00
2011-06-30 14:34:46 +01:00
2011-06-30 14:34:33 +01:00
2012-02-20 23:12:45 +00:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-08-06 14:27:39 +01:00
2012-02-20 23:12:45 +00:00
2012-08-06 14:27:40 +01:00
2012-08-06 14:27:42 +01:00
2012-08-06 14:27:42 +01:00
2012-08-06 14:27:42 +01:00
2012-08-06 14:27:44 +01:00
2012-08-06 14:27:39 +01:00