|
这个代码就执行一次就可以了
MaterialPtr pMat = MaterialManager::getSingleton().create("texture", ResourceGroupManager: EFAULT_RESOURCE_GROUP_NAME);
Pass* pass = pMat->getTechnique(0)->getPass(0);
// 这个可以实现一下 war3地地形效果多层帖图
TextureUnitState* pp = pass->createTextureUnitState( "source.png", 0);
pp = pass->createTextureUnitState( "alpha_blend.png", 1);
pp->setColourOperation(LBO_ALPHA_BLEND);
// 如果不想实现混合纹理那么 可以在这里把第三层设置去掉就可以了
pp = pass->createTextureUnitState( "dest.png", 2);
pp->setColourOperationEx(LBX_BLEND_CURRENT_ALPHA, LBS_TEXTURE, LBS_CURRENT);
// 这个对象很关键
ManualObject* object = pSceneMgr->createManualObject("demo");
// 场景节点
SceneNode* mNode->attachObject(object);
// 下面实现方法和opengl 地使用差不多
// 自定义材质
object->begin("texture", RenderOperation::OT_TRIANGLE_STRIP);
object->position(-10, 0, -10);
object->normal(1, 1, 1);
// 注意这里 ManualObject 对象支持最大6层帖图
object->textureCoord(0, 0); // 第一层帖图设置
object->textureCoord(0, 0); // 第二层帖图设置
object->position(-10, 0, +10);
object->normal(1, 1, 1);
object->textureCoord(0, 1);
object->textureCoord(0, 1);
object->textureCoord(0, 1);
object->position(+10, 0, -10);
object->normal(1, 1, 1);
object->textureCoord(1, 0);
object->textureCoord(1, 0);
object->textureCoord(1, 0);
object->position(+10, 0, +10);
object->normal(1, 1, 1);
object->textureCoord(1, 1);
object->textureCoord(1, 1);
object->textureCoord(1, 1);
object->end();
// 可以加载已经在文件中定义好地材质
object->begin("texture2", RenderOperation::OT_TRIANGLE_STRIP);
object->position(+10, 0, -10);
object->normal(1, 1, 1);
object->textureCoord(0, 0);
object->position(+10, 0, +10);
object->normal(1, 1, 1);
object->textureCoord(0, 1);
object->position(+30, 0, -10);
object->normal(1, 1, 1);
object->textureCoord(1, 0);
// vertex8
object->position(+30, 0, +10);
object->normal(1, 1, 1);
object->textureCoord(1, 1);
object->position(+30, 0, -10);
object->normal(1, 1, 1);
object->textureCoord(0, 0);
object->position(+30, 0, +10);
object->normal(1, 1, 1);
object->textureCoord(0, 1);
object->position(+50, 0, -10);
object->normal(1, 1, 1);
object->textureCoord(1, 0);
object->position(+50, 0, +10);
object->normal(1, 1, 1);
object->textureCoord(1, 1);
object->end(); [em1] [em2] |
|