|
|
|
|
@ -31,45 +31,45 @@ CameraTest::CameraTest() {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void CameraTest::fixAspectRatio() { |
|
|
|
|
Vector2 projectionSize(2, 3); |
|
|
|
|
Vector2 projectionScale(0.5f, 1.0f/3.0f); |
|
|
|
|
Math::Vector2<GLsizei> size(400, 300); |
|
|
|
|
|
|
|
|
|
/* Division by zero */ |
|
|
|
|
Vector2 projectionSizeZeroY(2, 0); |
|
|
|
|
Vector2 projectionSizeZeroX(0, 2); |
|
|
|
|
Vector2 projectionScaleZeroY(0.5f, 0.0f); |
|
|
|
|
Vector2 projectionScaleZeroX(0.0f, 0.5f); |
|
|
|
|
Math::Vector2<GLsizei> sizeZeroY(400, 0); |
|
|
|
|
Math::Vector2<GLsizei> sizeZeroX(0, 300); |
|
|
|
|
CORRADE_COMPARE(Implementation::aspectRatioFix<Matrix4>(Implementation::AspectRatioPolicy::Clip, projectionSizeZeroX, size), Matrix4()); |
|
|
|
|
CORRADE_COMPARE(Implementation::aspectRatioFix<Matrix4>(Implementation::AspectRatioPolicy::Clip, projectionSizeZeroY, size), Matrix4()); |
|
|
|
|
CORRADE_COMPARE(Implementation::aspectRatioFix<Matrix4>(Implementation::AspectRatioPolicy::Clip, projectionSize, sizeZeroY), Matrix4()); |
|
|
|
|
CORRADE_COMPARE(Implementation::aspectRatioFix<Matrix4>(Implementation::AspectRatioPolicy::Extend, projectionSize, sizeZeroX), Matrix4()); |
|
|
|
|
CORRADE_COMPARE(Implementation::aspectRatioFix<Matrix4>(Implementation::AspectRatioPolicy::Clip, projectionScaleZeroX, size), Matrix4()); |
|
|
|
|
CORRADE_COMPARE(Implementation::aspectRatioFix<Matrix4>(Implementation::AspectRatioPolicy::Clip, projectionScaleZeroY, size), Matrix4()); |
|
|
|
|
CORRADE_COMPARE(Implementation::aspectRatioFix<Matrix4>(Implementation::AspectRatioPolicy::Clip, projectionScale, sizeZeroY), Matrix4()); |
|
|
|
|
CORRADE_COMPARE(Implementation::aspectRatioFix<Matrix4>(Implementation::AspectRatioPolicy::Extend, projectionScale, sizeZeroX), Matrix4()); |
|
|
|
|
|
|
|
|
|
/* Not preserved */ |
|
|
|
|
CORRADE_COMPARE(Implementation::aspectRatioFix<Matrix4>(Implementation::AspectRatioPolicy::NotPreserved, projectionSize, size), Matrix4()); |
|
|
|
|
CORRADE_COMPARE(Implementation::aspectRatioFix<Matrix4>(Implementation::AspectRatioPolicy::NotPreserved, projectionScale, size), Matrix4()); |
|
|
|
|
|
|
|
|
|
/* Clip */ |
|
|
|
|
Matrix4 expectedClip(1.0f, 0.0f, 0.0f, 0.0f, |
|
|
|
|
0.0f, 4.0f/3.0f, 0.0f, 0.0f, |
|
|
|
|
0.0f, 0.0f, 1.0f, 0.0f, |
|
|
|
|
0.0f, 0.0f, 0.0f, 1.0f); |
|
|
|
|
CORRADE_COMPARE(Implementation::aspectRatioFix<Matrix4>(Implementation::AspectRatioPolicy::Clip, Vector2(2.0f), size), expectedClip); |
|
|
|
|
CORRADE_COMPARE(Implementation::aspectRatioFix<Matrix4>(Implementation::AspectRatioPolicy::Clip, Vector2(0.5f), size), expectedClip); |
|
|
|
|
Matrix4 expectedClipRectangle(1.0f, 0.0f, 0.0f, 0.0f, |
|
|
|
|
0.0f, 2.0f, 0.0f, 0.0f, |
|
|
|
|
0.0f, 0.0f, 1.0f, 0.0f, |
|
|
|
|
0.0f, 0.0f, 0.0f, 1.0f); |
|
|
|
|
CORRADE_COMPARE(Implementation::aspectRatioFix<Matrix4>(Implementation::AspectRatioPolicy::Clip, projectionSize, size), expectedClipRectangle); |
|
|
|
|
CORRADE_COMPARE(Implementation::aspectRatioFix<Matrix4>(Implementation::AspectRatioPolicy::Clip, projectionScale, size), expectedClipRectangle); |
|
|
|
|
|
|
|
|
|
/* Extend */ |
|
|
|
|
Matrix4 expectedExtend(3.0f/4.0f, 0.0f, 0.0f, 0.0f, |
|
|
|
|
0.0f, 1.0f, 0.0f, 0.0f, |
|
|
|
|
0.0f, 0.0f, 1.0f, 0.0f, |
|
|
|
|
0.0f, 0.0f, 0.0f, 1.0f); |
|
|
|
|
CORRADE_COMPARE(Implementation::aspectRatioFix<Matrix4>(Implementation::AspectRatioPolicy::Extend, Vector2(2.0f), size), expectedExtend); |
|
|
|
|
CORRADE_COMPARE(Implementation::aspectRatioFix<Matrix4>(Implementation::AspectRatioPolicy::Extend, Vector2(0.5f), size), expectedExtend); |
|
|
|
|
Matrix4 expectedExtendRectangle(0.5f, 0.0f, 0.0f, 0.0f, |
|
|
|
|
0.0f, 1.0f, 0.0f, 0.0f, |
|
|
|
|
0.0f, 0.0f, 1.0f, 0.0f, |
|
|
|
|
0.0f, 0.0f, 0.0f, 1.0f); |
|
|
|
|
CORRADE_COMPARE(Implementation::aspectRatioFix<Matrix4>(Implementation::AspectRatioPolicy::Extend, projectionSize, size), expectedExtendRectangle); |
|
|
|
|
CORRADE_COMPARE(Implementation::aspectRatioFix<Matrix4>(Implementation::AspectRatioPolicy::Extend, projectionScale, size), expectedExtendRectangle); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void CameraTest::defaultProjection2D() { |
|
|
|
|
|