From 0fb7ff21c06ced2a228ed22202ffa69688e5944e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Mon, 23 Feb 2015 22:52:06 +0100 Subject: [PATCH] SceneGraph: test proper behavior with Y-inverting camera projection. Fails when combined with aspect ratio correction. --- src/Magnum/SceneGraph/Test/CameraTest.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/Magnum/SceneGraph/Test/CameraTest.cpp b/src/Magnum/SceneGraph/Test/CameraTest.cpp index 800fecf43..03165e8da 100644 --- a/src/Magnum/SceneGraph/Test/CameraTest.cpp +++ b/src/Magnum/SceneGraph/Test/CameraTest.cpp @@ -41,6 +41,7 @@ struct CameraTest: TestSuite::Tester { void fixAspectRatio(); void defaultProjection2D(); void defaultProjection3D(); + void projectionCorrectedInvertedY(); void projectionSize2D(); void projectionSizeOrthographic(); void projectionSizePerspective(); @@ -56,6 +57,7 @@ CameraTest::CameraTest() { addTests({&CameraTest::fixAspectRatio, &CameraTest::defaultProjection2D, &CameraTest::defaultProjection3D, + &CameraTest::projectionCorrectedInvertedY, &CameraTest::projectionSize2D, &CameraTest::projectionSizeOrthographic, &CameraTest::projectionSizePerspective, @@ -119,6 +121,20 @@ void CameraTest::defaultProjection3D() { CORRADE_COMPARE(camera.projectionSize(), Vector2(2.0f)); } +void CameraTest::projectionCorrectedInvertedY() { + Object2D o; + Camera2D camera(o); + camera.setProjection({4.0f, -2.0f}) + .setAspectRatioPolicy(AspectRatioPolicy::Extend) + .setViewport({4, 4}); + + /* Resulting matrix should have Y coordinate inverted */ + Matrix3 expected{{0.5f, 0.0f, 0.0f}, + {0.0f, -0.5f, 0.0f}, + {0.0f, 0.0f, 1.0f}}; + CORRADE_COMPARE(camera.projectionMatrix(), expected); +} + void CameraTest::projectionSize2D() { Vector2 projectionSize(4.0f, 3.0f); Object2D o;