~baltix/+junk/irrlicht-test

« back to all changes in this revision

Viewing changes to tests/material.cpp

  • Committer: Mantas Kriaučiūnas
  • Date: 2011-07-18 13:06:25 UTC
  • Revision ID: mantas@akl.lt-20110718130625-c5pvifp61e7kj1ol
Included whole irrlicht SVN libraries to work around launchpad recipe issue with quilt, see https://answers.launchpad.net/launchpad/+question/165193

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include "testUtils.h"
 
2
 
 
3
using namespace irr;
 
4
 
 
5
static bool polygonOffset(video::E_DRIVER_TYPE type)
 
6
{
 
7
        IrrlichtDevice* device = createDevice(type, core::dimension2d<u32>(160, 120));
 
8
 
 
9
        if (device == 0)
 
10
                return true;
 
11
 
 
12
        video::IVideoDriver* driver = device->getVideoDriver();
 
13
        if (!driver->queryFeature(video::EVDF_POLYGON_OFFSET))
 
14
                return true;
 
15
        scene::ISceneManager* smgr = device->getSceneManager();
 
16
 
 
17
        // create first plane
 
18
        scene::ISceneNode* plane = smgr->addMeshSceneNode(smgr->addHillPlaneMesh(
 
19
                "plane", core::dimension2df(10,10), core::dimension2du(2,2)), 0, -1,
 
20
                core::vector3df(0,0,20), core::vector3df(270,0,0));
 
21
 
 
22
        if (plane)
 
23
        {
 
24
                plane->setMaterialTexture(0, driver->getTexture("../media/t351sml.jpg"));
 
25
                plane->setMaterialFlag(video::EMF_LIGHTING, false);
 
26
                plane->setMaterialFlag(video::EMF_BACK_FACE_CULLING, true);
 
27
        }
 
28
 
 
29
        // create second plane exactly on top of the first one
 
30
        scene::ISceneNode* plane2 = smgr->addMeshSceneNode(smgr->addHillPlaneMesh(
 
31
                "plane2", core::dimension2df(5,5), core::dimension2du(2,2)), 0, -1,
 
32
                core::vector3df(0,0,20), core::vector3df(270,0,0));
 
33
        plane2->setMaterialFlag(video::EMF_BACK_FACE_CULLING, false);
 
34
 
 
35
        smgr->addCameraSceneNode();
 
36
 
 
37
        // test back plane to back
 
38
        plane->getMaterial(0).PolygonOffsetDirection=video::EPO_BACK;
 
39
        plane->getMaterial(0).PolygonOffsetFactor=7;
 
40
 
 
41
        driver->beginScene(true, true, video::SColor(255,113,113,133));
 
42
        smgr->drawAll();
 
43
        driver->endScene();
 
44
        bool result = takeScreenshotAndCompareAgainstReference(driver, "-polygonBack.png");
 
45
 
 
46
        //reset back plane
 
47
        plane->getMaterial(0).PolygonOffsetFactor=0;
 
48
        // test front plane to front
 
49
        plane2->getMaterial(0).PolygonOffsetDirection=video::EPO_FRONT;
 
50
        plane2->getMaterial(0).PolygonOffsetFactor=7;
 
51
        driver->beginScene(true, true, video::SColor(255,113,113,133));
 
52
        smgr->drawAll();
 
53
        driver->endScene();
 
54
        result &= takeScreenshotAndCompareAgainstReference(driver, "-polygonFront.png");
 
55
 
 
56
        device->closeDevice();
 
57
        device->run();
 
58
        device->drop();
 
59
    return result;
 
60
}
 
61
 
 
62
bool material()
 
63
{
 
64
        bool result = true;
 
65
        TestWithAllDrivers(polygonOffset);
 
66
        return result;
 
67
}