From ddb20282314aeace19cfffc2a12d5c7043ab401a Mon Sep 17 00:00:00 2001 From: cutealien Date: Tue, 29 Mar 2022 20:24:24 +0000 Subject: [PATCH] Add another screenshot test Drawing the screenshot itself before taking final result to see if the problem is in the render or the screenshot Note: Test-images for software-drivers show some other problems there which this test wasn't about. git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6322 dfc29bdd-3216-0410-991c-e03cc46cb475 --- tests/media/Burning's Video-shotsInShots0.png | Bin 0 -> 5358 bytes tests/media/Burning's Video-shotsInShots2.png | Bin 0 -> 5358 bytes tests/media/Direct3D 9.0-shotsInShots0.png | Bin 0 -> 5054 bytes tests/media/Direct3D 9.0-shotsInShots2.png | Bin 0 -> 5054 bytes ...icht Software Driver 1.0-shotsInShots0.png | Bin 0 -> 840 bytes ...icht Software Driver 1.0-shotsInShots2.png | Bin 0 -> 840 bytes tests/media/OpenGL-shotsInShots0.png | Bin 0 -> 4699 bytes tests/media/OpenGL-shotsInShots2.png | Bin 0 -> 4699 bytes tests/screenshot.cpp | 73 +++++++++++++++++- tests/tests-last-passed-at.txt | 8 +- 10 files changed, 75 insertions(+), 6 deletions(-) create mode 100644 tests/media/Burning's Video-shotsInShots0.png create mode 100644 tests/media/Burning's Video-shotsInShots2.png create mode 100644 tests/media/Direct3D 9.0-shotsInShots0.png create mode 100644 tests/media/Direct3D 9.0-shotsInShots2.png create mode 100644 tests/media/Irrlicht Software Driver 1.0-shotsInShots0.png create mode 100644 tests/media/Irrlicht Software Driver 1.0-shotsInShots2.png create mode 100644 tests/media/OpenGL-shotsInShots0.png create mode 100644 tests/media/OpenGL-shotsInShots2.png diff --git a/tests/media/Burning's Video-shotsInShots0.png b/tests/media/Burning's Video-shotsInShots0.png new file mode 100644 index 0000000000000000000000000000000000000000..4f535724c138c2548772b4a1e0bd879e36e212e8 GIT binary patch literal 5358 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ℑgu)V6(CT+Xfpy) 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ℑgu)V6(CT+Xfpy) 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 dShxipe*-(160, 120), 32); if (!device) @@ -75,9 +75,78 @@ bool testShots(video::E_DRIVER_TYPE type) return true; } +// render some recognizable stuff +static void drawSomeStuff(video::IVideoDriver* driver) +{ + driver->draw2DRectangle(core::recti(5,5,155,115), + video::SColor(255, 100, 0, 0), + video::SColor(255, 0, 200, 0), + video::SColor(255, 0, 0, 200), + video::SColor(255, 20, 150, 150)); + driver->draw2DLine(core::position2di(10,10), core::position2di(150,110), video::SColor(255,250,50,0)); + driver->draw2DLine(core::position2di(0,120), core::position2di(80,60), video::SColor(255,50,50,250)); +} + +// Make a screenshot, then draw it again (scaled down) together with the stuff the screenshot was made from +static bool testShotsOfShots(video::E_DRIVER_TYPE type) +{ + SIrrlichtCreationParameters params; + params.AntiAlias = aa; + params.WindowSize = core::dimension2du(160, 120); + params.DriverType = type; + + IrrlichtDevice *device = createDeviceEx(params); + + if (!device) + return true; // in case the driver type does not exist + + video::IVideoDriver* driver = device->getVideoDriver(); + logTestString("Testing driver %ls\n", driver->getName()); + stabilizeScreenBackground(driver); + + device->run(); + driver->beginScene(video::ECBF_COLOR | video::ECBF_DEPTH, video::SColor(255,100,101,140)); + drawSomeStuff(driver); + driver->endScene(); + video::IImage* img = driver->createScreenShot(); + + bool result = true; + if ( img ) + { + video::ITexture * screenshot = driver->addTexture(io::path("firstScreenshot"), img); + + driver->beginScene(video::ECBF_COLOR | video::ECBF_DEPTH, video::SColor(255,100,101,140)); + drawSomeStuff(driver); + driver->draw2DImage(screenshot, core::recti(0, 30, 80, 90), core::recti(screenshot->getSize()), 0, 0, 0); + driver->endScene(); + img->drop(); + + irr::core::stringc name("-shotsInShots"); + name += irr::core::stringc((int)aa); + name += ".png"; + result = takeScreenshotAndCompareAgainstReference(driver, name.c_str()); + } + else + { + logTestString("Failed to create a screenshot"); + result = false; + } + + + device->closeDevice(); + device->run(); + device->drop(); + + return result; +} + bool screenshot() { bool result = true; TestWithAllHWDrivers(testShots); + aa = 0; + TestWithAllDrivers(testShotsOfShots); + aa = 2; // testing something that might cause troubles with Nouveau on some systems + TestWithAllDrivers(testShotsOfShots); return result; } diff --git a/tests/tests-last-passed-at.txt b/tests/tests-last-passed-at.txt index 0183f9bd..13f82e62 100644 --- a/tests/tests-last-passed-at.txt +++ b/tests/tests-last-passed-at.txt @@ -1,4 +1,4 @@ -Tests finished. 72 tests of 72 passed. -Compiled as DEBUG -Test suite pass at GMT Mon Mar 28 22:09:50 2022 - +Tests finished. 72 tests of 72 passed. +Compiled as DEBUG +Test suite pass at GMT Tue Mar 29 20:20:24 2022 +