|
我在做一个mesh面元属性编辑器,每个面元有一个int型属性(“装甲值”),并在程序里用颜色来可视化这个属性(比如红色代表0,蓝色代表最大值)。
为此,比较简单的方法是:为每个面元建立一个ManualObject,塞在一个SceneNode里面,并有一个自己的material。内存消耗可以无视,反正最多只有几十个面元。
但问题来了:我尝试了多种方法,建立的材质在显示的时候总是base white no light的效果,这是为什么捏?
建立部分代码如下:
- // 生成材质ID
- ostringstream id;
- id<<materialIdSeed++;
-
- // 建立材质对象
- oMaterial = Ogre::MaterialManager::getSingleton().create(id.str(),"General");
- oMaterial->getTechnique(0)->getPass(0)->setDiffuse(1,0,0,1);
-
- // 建立ManualObject
- oObject = oScene->createManualObject();
- oObject->begin(id.str(),Ogre::RenderOperation::OT_TRIANGLE_LIST);
- oObject->position(body->vertices[face->v1]);
- oObject->position(body->vertices[face->v2]);
- oObject->position(body->vertices[face->v3]);
- oObject->end();
- // 加入到场景,略
复制代码 |
|