游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1880|回复: 1

程序中建立材质的问题

[复制链接]

3

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2011-9-23 13:40:00 | 显示全部楼层 |阅读模式
我在做一个mesh面元属性编辑器,每个面元有一个int型属性(“装甲值”),并在程序里用颜色来可视化这个属性(比如红色代表0,蓝色代表最大值)。
为此,比较简单的方法是:为每个面元建立一个ManualObject,塞在一个SceneNode里面,并有一个自己的material。内存消耗可以无视,反正最多只有几十个面元。
但问题来了:我尝试了多种方法,建立的材质在显示的时候总是base white no light的效果,这是为什么捏?
建立部分代码如下:


  1.     // 生成材质ID
  2.     ostringstream id;
  3.     id<<materialIdSeed++;
  4.    
  5.     // 建立材质对象
  6.     oMaterial = Ogre::MaterialManager::getSingleton().create(id.str(),"General");
  7.     oMaterial->getTechnique(0)->getPass(0)->setDiffuse(1,0,0,1);
  8.    
  9.     //  建立ManualObject
  10.     oObject = oScene->createManualObject();
  11.     oObject->begin(id.str(),Ogre::RenderOperation::OT_TRIANGLE_LIST);
  12.     oObject->position(body->vertices[face->v1]);
  13.     oObject->position(body->vertices[face->v2]);
  14.     oObject->position(body->vertices[face->v3]);
  15.     oObject->end();

  16.     // 加入到场景,略
复制代码

2

主题

16

帖子

28

积分

注册会员

Rank: 2

积分
28
QQ
发表于 2011-9-28 19:45:00 | 显示全部楼层

Re: 程序中建立材质的问题

因为材质里面的光照并不是pass的属性。。。
改成                oMaterial->setAmbient(colour);
                oMaterial->setDiffuse(colour)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-9 10:45

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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