bool rttAndAntiAliasing(video::E_DRIVER_TYPE driverType) { SIrrlichtCreationParameters cp; cp.DriverType = driverType; cp.WindowSize = core::dimension2di(160, 120); cp.AntiAlias = 2; cp.Vsync = true; IrrlichtDevice* device = createDeviceEx(cp); if (!device) return true; video::IVideoDriver* driver = device->getVideoDriver(); if ((driver->getDriverAttributes().getAttributeAsInt("AntiAlias")<2) || (!driver->queryFeature(video::EVDF_RENDER_TO_TARGET))) { device->closeDevice(); device->run(); device->drop(); return true; } stabilizeScreenBackground(driver); logTestString("Testing driver %ls\n", driver->getName()); // sphere mesh scene::IAnimatedMesh* sphereMesh = device->getSceneManager()->addSphereMesh("atom", 1, 32, 32); // cam scene::ICameraSceneNode* cam = device->getSceneManager()->addCameraSceneNode(NULL, core::vector3df(0, 1, -5), core::vector3df(0, 0, 0)); cam->setNearValue(0.01f); cam->setFarValue(100.f); cam->updateAbsolutePosition(); device->getSceneManager()->setActiveCamera(cam); device->getSceneManager()->addLightSceneNode(0, core::vector3df(10,10,10)); device->getSceneManager()->setAmbientLight(video::SColorf(0.3f,0.3f,0.3f)); float radius = 3.f; core::vector3df pos1(-radius,0,0); core::vector3df pos2(radius,0,0); core::vector3df pos3(0,0,radius); core::vector3df pos4(0,0,-radius); core::matrix4 m; gui::IGUIStaticText* st = device->getGUIEnvironment()->addStaticText(L"", core::recti(0,0,200,20), false, false); st->setOverrideColor(video::SColor(255,255,255,0)); core::dimension2du dim_txt = core::dimension2du(160/2, 120/2); video::ITexture* rt1 = device->getVideoDriver()->addRenderTargetTexture(dim_txt, "rt1", device->getColorFormat()); video::ITexture* rt2 = device->getVideoDriver()->addRenderTargetTexture(dim_txt, "rt2", device->getColorFormat()); video::ITexture* rt3 = device->getVideoDriver()->addRenderTargetTexture(dim_txt, "rt3", video::ECF_A8R8G8B8); video::ITexture* rt4 = device->getVideoDriver()->addRenderTargetTexture(dim_txt, "rt4", device->getColorFormat()); device->getSceneManager()->setActiveCamera(cam); device->getVideoDriver()->beginScene(); #if 1 st->setText(L"Texture Rendering"); Render(device, rt1, pos1, pos2, sphereMesh, pos3, pos4); Render(device, rt2, pos1, pos2, sphereMesh, pos3, pos4); Render(device, rt3, pos1, pos2, sphereMesh, pos3, pos4); Render(device, rt4, pos1, pos2, sphereMesh, pos3, pos4); device->getVideoDriver()->setRenderTarget(0); device->getVideoDriver()->draw2DImage(rt1, core::position2di(0,0)); device->getVideoDriver()->draw2DImage(rt2, core::position2di(80,0)); device->getVideoDriver()->draw2DImage(rt3, core::position2di(0,60)); device->getVideoDriver()->draw2DImage(rt4, core::position2di(80,60)); #else ITexture* rt0 = NULL; Render(device, rt0, pos1, pos2, sphereMesh, pos3, pos4); #endif st->draw(); device->getVideoDriver()->endScene(); bool result = takeScreenshotAndCompareAgainstReference(driver, "-rttAndAntiAlias.png"); device->closeDevice(); device->run(); device->drop(); return result; }