Add another test for pixel exact 2d rendering

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@3826 dfc29bdd-3216-0410-991c-e03cc46cb475
master
hybrid 2011-06-08 17:06:44 +00:00
parent 0c18bf9e8a
commit f22fe54680
2 changed files with 53 additions and 0 deletions

View File

@ -16,6 +16,15 @@ bool testWithRenderTarget(video::E_DRIVER_TYPE driverType)
video::IVideoDriver* driver = device->getVideoDriver();
if (!driver->queryFeature(video::EVDF_RENDER_TO_TARGET))
{
device->closeDevice();
device->run();
device->drop();
return true;
}
logTestString("Testing driver %ls\n", driver->getName());
video::ITexture* RenderTarget=driver->addRenderTargetTexture(core::dimension2d<u32>(64,64), "BASEMAP");
video::ITexture *tex=driver->getTexture("../media/water.jpg");
@ -53,6 +62,8 @@ bool testWithPNG(video::E_DRIVER_TYPE driverType)
video::IVideoDriver* driver = device->getVideoDriver();
logTestString("Testing driver %ls\n", driver->getName());
video::ITexture *tex=driver->getTexture("media/RedbrushAlpha-0.25.png");
driver->beginScene(true, true, video::SColor(255,40,40,255));//Backbuffer background is blue
@ -68,12 +79,54 @@ bool testWithPNG(video::E_DRIVER_TYPE driverType)
return result;
}
// draws an image and checks if the written example equals the original image
bool testExactPlacement(video::E_DRIVER_TYPE driverType)
{
// create device
IrrlichtDevice *device = createDevice(video::EDT_DIRECT3D9, core::dimension2d<u32>(160,120), 32);
if (device == 0)
return true; // could not create selected driver.
video::IVideoDriver* driver = device->getVideoDriver();
if (driver->getColorFormat() != video::ECF_A8R8G8B8 || !driver->queryFeature(video::EVDF_RENDER_TO_TARGET))
{
device->closeDevice();
device->run();
device->drop();
return true;
}
logTestString("Testing driver %ls\n", driver->getName());
video::ITexture* rt=driver->addRenderTargetTexture(core::dimension2d<u32>(32,32), "rt1");
video::ITexture *tex=driver->getTexture("../media/fireball.bmp");
driver->beginScene(true, true, video::SColor(255,40,40,255));//Backbuffer background is blue
driver->setRenderTarget(rt);
driver->draw2DImage(tex, core::recti(0,0,32,32), core::recti(0,0,64,64));
driver->setRenderTarget(0);
driver->endScene();
video::IImage* img = driver->createImage(rt, core::vector2di(), rt->getSize());
driver->writeImageToFile(img, "results/fireball.png");
bool result = binaryCompareFiles("media/fireball.png", "results/fireball.png");
device->closeDevice();
device->run();
device->drop();
return result;
}
}
bool draw2DImage()
{
bool result = true;
TestWithAllDrivers(testWithRenderTarget);
TestWithAllDrivers(testExactPlacement);
TestWithAllHWDrivers(testWithPNG);
return result;
}

BIN
tests/media/fireball.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 974 B