Code: Select all
// removed until correct matrices can be created.
Code: Select all
// removed until correct matrices can be created.
Code: Select all
(0, 0) +---------+ (1, 0)
| \ |
| \ |
| \ |
| \ |
(0, 1) +---------+ (1, 1)
Code: Select all
#include <irrlicht.h>
using namespace irr;
#pragma comment(lib, "Irrlicht.lib")
int main()
{
IrrlichtDevice* device =
createDevice(video::EDT_DIRECT3D8, core::dimension2di(640, 480), 32, false, false);
if (device == 0)
return 1; // could not create selected driver.
video::IVideoDriver* driver = device->getVideoDriver();
scene::ISceneManager* smgr = device->getSceneManager();
smgr->addCameraSceneNodeFPS(0, 50, 50);
scene::SMeshBuffer mb;
// 0 +---------+ 2
// | \ |
// | \ |
// | \ |
// | \ |
// 1 +---------+ 3
for (u32 i = 0; i < 4; ++i)
{
video::S3DVertex v;
// (0, 0) (1, 0)
// (0, 1) (1, 1)
v.TCoords.X = i & 2 ? 1.f : 0.f;
v.TCoords.Y = i & 1 ? 1.f : 0.f;
// ( 0, 0, 255) (255, 0, 255) blue purple
// ( 0, 255, 255) (255, 255, 255) i.e. teal white
v.Color.set(255, u32(v.TCoords.X * 255), u32(v.TCoords.Y * 255), 255);
// (-5, 5) (5, 5)
// (-5, -5) (5, -5)
v.Pos.X = -5.f + v.TCoords.X * 10.f;
v.Pos.Y = 5.f + v.TCoords.Y * -10.f;
v.Pos.Z = 10.f;
// normal points at camera
v.Normal.set (0, 0, -1);
mb.Vertices.push_back(v);
}
mb.Indices.push_back(0);
mb.Indices.push_back(3);
mb.Indices.push_back(1);
mb.Indices.push_back(0);
mb.Indices.push_back(2);
mb.Indices.push_back(3);
mb.Material.Lighting = false;
mb.Material.setTexture(0, driver->getTexture("../../media/dotnetback.jpg"));
f32 offset = 1.f;
u32 then = device->getTimer()->getTime();
while(device->run())
{
if (device->isWindowActive())
{
if (driver->beginScene(true, true, video::SColor(0,60,60,60)))
{
smgr->drawAll(); // camera needs this to move
u32 now = device->getTimer()->getTime();
offset += (now - then) / 20000.f;
then = now;
if (1.f < offset)
offset = 0.f;
core::matrix4 m;
driver->setTransform(video::ETS_WORLD, m);
driver->setMaterial(mb.Material);
m.setTextureTranslate(offset * 2, offset / 2); // move right and down slow
driver->setTransform(video::ETS_TEXTURE_0, m);
driver->drawMeshBuffer(&mb);
driver->endScene();
}
}
else
{
device->sleep(125);
}
}
device->drop();
return 0;
}
Code: Select all
// move right and down slow