Hi,
hatte für
das Buch Irrlicht - From Noob to Pro eine Funktion geschrieben um Bilder in Irrlicht zu drehen. Will nicht viele Worte dazu verlieren ist ausführlich
hier beschrieben. Anbei eben nur der Code der Funktion.
Grüße heck
Code:
ITexture* rotateImage(ITexture* source, f32 angle)
{
if(!source)
{
return NULL;
}
if(angle == 0.0f)
{
return source;
}
IVideoDriver* driver = device->getVideoDriver();
s32 midx = source->getOriginalSize().Width/2;
s32 midy = source->getOriginalSize().Height/2;
IImage* virtualSourceImage = driver->createImage(source, position2d<s32>(0,0), source->getOriginalSize());
IImage* target = driver->createImage(ECF_A8R8G8B8, dimension2d<u32>(2*sqrt((f32)(midx*midx + midy*midy)), 2*sqrt((f32)(midx*midx + midy*midy))));
target->fill(SColor(0,0,0,0));
s32 tx = 0, ty = 0;
for(s32 x = 0; x < (s32) source->getOriginalSize().Width; x++)
{
for(s32 y = 0; y < (s32) source->getOriginalSize().Height; y++)
{
tx = (s32)((x-midx)*cos(angle*3.14159265/180) - (y-midy)*sin(angle*3.14159265/180));
ty = (s32)((y-midy)*cos(angle*3.14159265/180) + (x-midx)*sin(angle*3.14159265/180));
target->setPixel(tx+midx,ty+midy, virtualSourceImage->getPixel(x,y));
}
}
return driver->addTexture("rotatedImage", target);
}
_________________
Irrlicht - From Noob To Pro A Guideline
--
Sonstige Projekte, Blog :
http://www.rpdev.net