Index: ui/gfx/compositor/compositor_win.cc |
diff --git a/ui/gfx/compositor/compositor_win.cc b/ui/gfx/compositor/compositor_win.cc |
index e3ca2a2103dcd44da236ed34b39243fde891f050..0685f83157beabfdfadc273dc9a46559893e74ad 100644 |
--- a/ui/gfx/compositor/compositor_win.cc |
+++ b/ui/gfx/compositor/compositor_win.cc |
@@ -338,21 +338,15 @@ void CompositorWin::Init() { |
void CompositorWin::UpdatePerspective(const ui::Transform& transform, |
const gfx::Size& view_size) { |
- // Apply transform from view. |
- const SkMatrix& sk_matrix(transform.matrix()); |
- // Use -1 * kMTransY for y-translation as origin for views is upper left. |
- D3DXMATRIX transform_matrix( |
- // row 1 |
- sk_matrix[SkMatrix::kMScaleX], sk_matrix[SkMatrix::kMSkewX], 0.0f, |
- sk_matrix[SkMatrix::kMPersp0], |
- // row 2 |
- sk_matrix[SkMatrix::kMSkewY], sk_matrix[SkMatrix::kMScaleY], 0.0f, |
- sk_matrix[SkMatrix::kMPersp1], |
- // row 3 |
- 0.0f, 0.0f, 1.0f, sk_matrix[SkMatrix::kMPersp2], |
- // row 4. |
- sk_matrix[SkMatrix::kMTransX], -sk_matrix[SkMatrix::kMTransY], 0.0f, |
- 1.0f); |
+ float transform_data_buffer[16]; |
+ transform.matrix().asColMajorf(transform_data_buffer); |
+ D3DXMATRIX transform_matrix(&transform_data_buffer[0]); |
+ std::swap(transform_matrix._12,transform_matrix._21); |
sky
2011/06/24 20:58:19
nit: space after ',' on all these lines.
|
+ std::swap(transform_matrix._13,transform_matrix._31); |
+ std::swap(transform_matrix._23,transform_matrix._32); |
+ |
+ // Different coordinate system; flip the y. |
+ transform_matrix._42 *= -1; |
// Scale so x and y are from 0-2. |
D3DXMATRIX scale_matrix; |
@@ -379,6 +373,7 @@ void CompositorWin::UpdatePerspective(const ui::Transform& transform, |
D3DXMATRIX wvp = transform_matrix * scale_matrix * translate_matrix * view * |
projection_matrix; |
+ |
fx_->GetVariableByName("gWVP")->AsMatrix()->SetMatrix(wvp); |
} |