Code: Select all
/*
* Setup a oak tree
*/
video::E_MATERIAL_TYPE leafMaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL;
//
// Load leaf shader
//
//leafMaterialType = (video::E_MATERIAL_TYPE) driver->getGPUProgrammingServices()->addHighLevelShaderMaterialFromFiles(
// "Data/shaders/leaves.vert",
// "main",
// EVST_VS_2_0,
// "Data/shaders/leaves.frag",
// "main",
// EPST_PS_2_0,
// 0,
// EMT_TRANSPARENT_ALPHA_CHANNEL,
// 0);
scene::CTreeGenerator* oakGenerator = new scene::CTreeGenerator(smgr);
io::IXMLReader* xml = device->getFileSystem()->createXMLReader( "Data\\trees\\Oak.xml" );
oakGenerator->loadFromXML(xml);
xml->drop();
scene::CTreeSceneNode* tree = new scene::CTreeSceneNode(smgr->getRootSceneNode(), smgr);
tree->drop();
//Make it smaller
tree->setScale(core::vector3df(0.2f,0.5f,0.2f));
tree->setup( oakGenerator );
tree->getLeafNode()->getMaterial(0).TextureLayer[0].AnisotropicFilter = true;
tree->getLeafNode()->getMaterial(0).TextureLayer[0].BilinearFilter = false;
tree->setMaterialTexture(0, driver->getTexture("Data\\textures\\OakBark.png"));
tree->getLeafNode()->setMaterialTexture(0, driver->getTexture("Data\\textures\\OakLeaf.png"));
tree->getLeafNode()->setMaterialType( video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF );
tree->getLeafNode()->setMaterialType( leafMaterialType );