在第二人生里,每个人物显示都有一个名称,那么这个名称又是怎么样显示出来的呢?怎么样实现的呢?带着这两个问题,下面就去分析第二人生里面的实现代码。它的人物名称显示如下:
蔡军生 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,这样在渲染时就会把名称显示出来。

第二人生的源码分析(二十)显示人物名称相关推荐

  1. 第二人生的源码分析(二十六)底层网络协议

    为了理解第二人生的客户端与服务器的沟通,那么下面就来分析一下第二人生采用的网络协议.在目前的网络里,主要有两个协议:TCP和UDP,而第二人生里是采用UDP协议.TCP协议与UDP协议的主要区别,就是 ...

  2. 【转】ABP源码分析二十九:ABP.MongoDb

    这个Module通过建立一个MongoDbRepositoryBase<TEntity> 基类,封装了对MongoDb数据库的操作. 这个module通过引用MongoDB.Driver, ...

  3. 【转】ABP源码分析二十二:Navigation

    MenuDefinition:封装了导航栏上的主菜单的属性. MenuItemDefinition:封装了主菜单的子菜单的属性.子菜单可以引用其他子菜单构成一个菜单树 UserMenu/UserMen ...

  4. 【转】ABP源码分析二十八:ABP.MemoryDB

    这个模块简单,且无实际作用(该模块用于支持ABP框架单元测试的).一般实际项目中都有用数据库做持久化,用了数据库就无法用这个MemoryDB 模块了.原因在于ABP限制了UnitOfWork的类型只能 ...

  5. 【转】ABP源码分析二十六:核心框架中的一些其他功能

    本文是ABP核心项目源码分析的最后一篇,介绍一些前面遗漏的功能 AbpSession AbpSession: 目前这个和CLR的Session没有什么直接的联系.当然可以自定义的去实现IAbpSess ...

  6. 【转】ABP源码分析二十五:EventBus

    IEventData/EventData: 封装了EventData信息,触发event的源对象和时间 IEventBus/EventBus: 定义和实现了了一系列注册,注销和触发事件处理函数的方法. ...

  7. 【转】ABP源码分析二十四:Notification

    NotificationDefinition: 用于封装Notification Definnition 的信息.注意和Notification 的区别,如果把Notification看成是具体的消息 ...

  8. 【转】ABP源码分析二十:ApplicationService

    IApplicationService : 空接口,起标识作用.所有实现了IApplicationService 的类都会被自动注入到容器中.同时所有IApplicationService对象都会被注 ...

  9. ABP源码分析二十五:EventBus

    IEventData/EventData: 封装了EventData信息,触发event的源对象和时间 IEventBus/EventBus: 定义和实现了了一系列注册,注销和触发事件处理函数的方法. ...

  10. ABP源码分析二十八:ABP.MemoryDB

    这个模块简单,且无实际作用.一般实际项目中都有用数据库做持久化,用了数据库就无法用这个MemoryDB 模块了.原因在于ABP限制了UnitOfWork的类型只能有一个(前文以作介绍),一般用了数据库 ...

最新文章

  1. 搜索页面scroll下拉时候进行刷新,显示更多搜索值
  2. android头部固定悬停,Android开发上滑悬停且头部可刷新
  3. 常州彪马机器人_PUMA560型机器人
  4. 【2019浙江省赛 - B】Element Swapping(思维,数学)
  5. qt +ChartDirector 绘制图表
  6. 读懂mysql慢查询日志
  7. EzCad 二次开发 金橙子激光雕刻机c# 能显示预览图
  8. 电阻的快速选型对开发项目非常重要
  9. 已解决:虚拟机安装windows server 2012 出现“找不到任何设备驱动程序。请确保安装介质包含正确的驱动程序”
  10. 显示器偏色测试软件,显示器偏色,如何解决显示器偏色?
  11. mysql统计每个学生的选课门数_SQL一个查询中包含两个聚集函数怎么弄啊例如,查询每名学生的选课门数和平均成绩怎么弄啊...
  12. 国内与国际控制学科知名会议
  13. Android 双击退出和单击回到桌面
  14. 常见企业拓扑Cisco配置:三层交换机互联、DHCP配置、路由器交换机配置、NAT静态地址转换、DMZ区域的ACL配置
  15. MATLAB DCT变换原理和源码
  16. Redis安装(完整版)
  17. 19种分布式系统设计模式
  18. html中嵌套谷歌定位地图
  19. u盘安装linux戴尔boot设置,戴尔台式机bios设置,详细教您如何安装U盘启动
  20. 基于监督学习+自监督学习的智能抠图,精确到头发丝 | CVPR2020

热门文章

  1. 如何利用BERT做文本摘要
  2. 树莓派4b控制机械手臂_STM32与树莓派(上位机)交互控制机械臂
  3. 实时报价查询系统C++编程实现(阿里面试题改编)
  4. 433m的模块含义及该如何适当的选择对应的无线模块
  5. java高级用法之:绑定CPU的线程Thread-Affinity
  6. 后台网站二级页面制作步骤
  7. 手机OTG是什么功能,怎样使用?
  8. 2018蓝桥杯B组国赛第四题 调手表(bfs)
  9. 笔记本计算机没反应怎么办,笔记本电脑开机黑屏没反应怎么办?
  10. 【毕业设计-教程】红外控制原理详解 - 单片机嵌入式 物联网 stm32 c51