游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3549|回复: 2

多层帖图多种材质实现

[复制链接]

2

主题

40

帖子

92

积分

注册会员

Rank: 2

积分
92
发表于 2007-5-22 16:34:00 | 显示全部楼层 |阅读模式
               
这个代码就执行一次就可以了
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]

9

主题

55

帖子

59

积分

注册会员

Rank: 2

积分
59
发表于 2008-3-1 19:09:00 | 显示全部楼层

Re: 多层帖图多种材质实现

这个只是创建了一个财质..然后贴在一个manualObject上面..这个和地表多层贴图有什么关系?

2

主题

40

帖子

92

积分

注册会员

Rank: 2

积分
92
 楼主| 发表于 2011-3-31 12:00:00 | 显示全部楼层

Re:多层帖图多种材质实现

呵呵  这是一种笨方法 不过自我感觉很好 所以发上来了 呵呵
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-8 11:34

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表