]> git.lizzy.rs Git - irrlicht.git/blob - tests/anti-aliasing.cpp
Fix include install location
[irrlicht.git] / tests / anti-aliasing.cpp
1 #include "testUtils.h"\r
2 \r
3 using namespace irr;\r
4 \r
5 static bool testLineRendering(video::E_DRIVER_TYPE type)\r
6 {\r
7         SIrrlichtCreationParameters params;\r
8         params.AntiAlias = 2;\r
9         params.Bits = 16;\r
10         params.WindowSize = core::dimension2d<u32>(160, 120);\r
11         params.DriverType = type;\r
12 \r
13         IrrlichtDevice *device = createDeviceEx(params);\r
14 \r
15         if (!device)\r
16                 return true; // in case the driver type does not exist\r
17 \r
18         video::IVideoDriver* driver = device->getVideoDriver();\r
19         // if no AntiAliasing supported, skip this test\r
20         if (driver->getDriverAttributes().getAttributeAsInt("AntiAlias")<2)\r
21         {\r
22                 device->closeDevice();\r
23                 device->run();\r
24                 device->drop();\r
25                 return true;\r
26         }\r
27 \r
28         logTestString("Testing driver %ls\n", driver->getName());\r
29 \r
30         scene::ISceneManager* smgr = device->getSceneManager();\r
31 \r
32         scene::IAnimatedMesh* mesh = smgr->getMesh("./media/sydney.md2");\r
33         if (!mesh)\r
34         {\r
35                 device->closeDevice();\r
36                 device->run();\r
37                 device->drop();\r
38                 return false;\r
39         }\r
40 \r
41         stabilizeScreenBackground(driver);\r
42 \r
43         scene::IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode( mesh );\r
44 \r
45         if (node)\r
46         {\r
47                 node->setMaterialFlag(video::EMF_LIGHTING, false);\r
48                 node->setMD2Animation(scene::EMAT_STAND);\r
49                 node->setMaterialTexture( 0, driver->getTexture("./media/sydney.bmp") );\r
50         }\r
51 \r
52         smgr->addCameraSceneNode(0, core::vector3df(0,30,-40), core::vector3df(0,5,0));\r
53 \r
54         device->getTimer()->setTime(0); // scene has animations and current scene seems to be saved at that time\r
55         driver->beginScene(video::ECBF_COLOR | video::ECBF_DEPTH, video::SColor(255,100,101,140));\r
56         smgr->drawAll();\r
57         driver->draw3DBox(node->getBoundingBox(), video::SColor(0,255,0,0));\r
58         driver->draw2DLine(core::position2di(10,10), core::position2di(100,100), video::SColor(255,0,0,0));\r
59         driver->endScene();\r
60 \r
61         bool result = takeScreenshotAndCompareAgainstReference(driver, "-lineAntiAliasing.png", 99.4f );\r
62 \r
63         device->closeDevice();\r
64         device->run();\r
65         device->drop();\r
66     return result;\r
67 }\r
68 \r
69 bool antiAliasing()\r
70 {\r
71         bool result = true;\r
72         TestWithAllHWDrivers(testLineRendering);\r
73         return result;\r
74 }\r