Browse Source

SceneGraph: test proper behavior with Y-inverting camera projection.

Fails when combined with aspect ratio correction.
pull/94/head
Vladimír Vondruš 11 years ago
parent
commit
0fb7ff21c0
  1. 16
      src/Magnum/SceneGraph/Test/CameraTest.cpp

16
src/Magnum/SceneGraph/Test/CameraTest.cpp

@ -41,6 +41,7 @@ struct CameraTest: TestSuite::Tester {
void fixAspectRatio(); void fixAspectRatio();
void defaultProjection2D(); void defaultProjection2D();
void defaultProjection3D(); void defaultProjection3D();
void projectionCorrectedInvertedY();
void projectionSize2D(); void projectionSize2D();
void projectionSizeOrthographic(); void projectionSizeOrthographic();
void projectionSizePerspective(); void projectionSizePerspective();
@ -56,6 +57,7 @@ CameraTest::CameraTest() {
addTests({&CameraTest::fixAspectRatio, addTests({&CameraTest::fixAspectRatio,
&CameraTest::defaultProjection2D, &CameraTest::defaultProjection2D,
&CameraTest::defaultProjection3D, &CameraTest::defaultProjection3D,
&CameraTest::projectionCorrectedInvertedY,
&CameraTest::projectionSize2D, &CameraTest::projectionSize2D,
&CameraTest::projectionSizeOrthographic, &CameraTest::projectionSizeOrthographic,
&CameraTest::projectionSizePerspective, &CameraTest::projectionSizePerspective,
@ -119,6 +121,20 @@ void CameraTest::defaultProjection3D() {
CORRADE_COMPARE(camera.projectionSize(), Vector2(2.0f)); 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() { void CameraTest::projectionSize2D() {
Vector2 projectionSize(4.0f, 3.0f); Vector2 projectionSize(4.0f, 3.0f);
Object2D o; Object2D o;

Loading…
Cancel
Save