Get icon with setRenderTarget

You are an experienced programmer and have a problem with the engine, shaders, or advanced effects? Here you'll get answers.
No questions about C++ programming or topics which are answered in the tutorials!
Post Reply
Laptev
Posts: 27
Joined: Tue Jun 03, 2008 4:36 am
Location: Romania

Get icon with setRenderTarget

Post by Laptev »

Hi all. I looked over exemple 13 RenderToTexture and everithing seemed very clear about how to use setRenderTarget(), but still i can't make this work properly... The problem is that i get the icon from the main camera's position(aCam) not the static one(bCam).Can someone tell me what is wrong?

Code: Select all

video::ITexture *get2DIcon(IrrlichtDevice *Device, scene::ISceneNode *Node)
{
	video::ITexture* tex = Device->getVideoDriver()->addRenderTargetTexture(core::dimension2d<u32>(128,128), "RTT1");

	scene::ICameraSceneNode *aCam = Device->getSceneManager()->getActiveCamera();
	scene::ICameraSceneNode *bCam = Device->getSceneManager()->addCameraSceneNode();
	bCam->setPosition(Node->getAbsolutePosition()+core::vector3df(0,20,0));
	bCam->setTarget(Node->getAbsolutePosition());
	bCam->updateAbsolutePosition();

	bool visible = Node->isVisible();
	bool lighted = Node->getMaterial(0).Lighting;

	Device->getVideoDriver()->setRenderTarget(tex, true, true, video::SColor(0,0,0,0));
	Device->getSceneManager()->setActiveCamera(bCam);

	Node->setVisible(true);
	Node->setMaterialFlag(video::EMF_LIGHTING, false);

	Node->render();

	Node->setVisible(visible);
	Node->setMaterialFlag(video::EMF_LIGHTING, lighted);

	Device->getVideoDriver()->setRenderTarget(0, true, true, 0);
	Device->getSceneManager()->setActiveCamera(aCam);
	aCam->updateAbsolutePosition();
	bCam->remove();

	return tex;
};
Post Reply