在第二人生里,每个人物显示都有一个名称,那么这个名称又是怎么样显示出来的呢?怎么样实现的呢?带着这两个问题,下面就去分析第二人生里面的实现代码。它的人物名称显示如下:
蔡军生 2008/01/24 QQ:9073204 深圳
从上面的图片上,可以看到人物的头上有一个名称显示,用来标识人物角色。要显示这个人物名称,肯定是在二维的空间里显示的。每个人都有一个名称显示,很多人在一起时,就需要显示多名称。因此,在第二人生里把名称的显示和角色的显示是分离的。调用下面的代码来显示名称:
1、LLPipeline::renderGeom()
2、render_hud_elements()
3、LLHUDObject::renderAll()
这个函数的代码如下:
#001 void LLHUDObject::renderAll()
#002 {
#003
LLHUDObject *hud_objp;
#004
#005
hud_object_list_t::iterator object_it;
#006
for (object_it = sHUDObjects.begin(); object_it != sHUDObjects.end(); )
#007
{
#008
hud_object_list_t::iterator cur_it = object_it++;
#009
hud_objp = (*cur_it);
#010
if (hud_objp->getNumRefs() == 1)
#011
{
#012
sHUDObjects.erase(cur_it);
#013
}
#014
else if (hud_objp->isVisible())
#015
{
#016
hud_objp->render();
#017
}
#018
}
#019 }
在第16行里显示人物的名称。
由于在这个类里会先调用LLHUDObject::addHUDObject()函数添加人物名称显示对象LLHUDText,这样在渲染时就会把名称显示出来。