第二人生的源码分析(十九)人物组合显示
来源:互联网 发布:网络大电影有哪些 编辑:程序博客网 时间:2024/04/28 09:41
在第二人生里,人物的显示是比较复杂的,因为同一个网格模型可以显示为不同的人物出来,也就是人物每个部位的纹理不一样,比如不同的女孩子就有可能选择不同的头发,还可以穿着不同的衣服,不同的裤子等等。要实现这些功能,也就是说要把头、上身、下身、脚分开来显示。如下图所示:
蔡军生 2008/01/22 QQ:9073204 深圳
现在就来仔细地分析一下第二人生里是怎么样分别显示不同身体部份的,它的代码如下:
#001 U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass)
#002 {
#003 U32 num_indices = 0;
#004
#005 if (!mIsBuilt)
#006 {
#007 return num_indices;
#008 }
#009
……
……
#077 //--------------------------------------------------------------------
#078 // render all geomety attached to the skeleton
#079 //--------------------------------------------------------------------
#080 static LLStat render_stat;
#081
#082 LLViewerJointMesh::sRenderPass = pass;
#083
这里开始显示人物的各部位网格和纹理。
#084 if (pass == AVATAR_RENDER_PASS_SINGLE)
#085 {
#086 BOOL first_pass = TRUE;
#087 if (!mIsSelf || gAgent.needsRenderHead())
#088 {
#089 num_indices += mHeadLOD.render(mAdjustedPixelArea);
#090 first_pass = FALSE;
#091 }
上面显示头部。
#092 num_indices += mUpperBodyLOD.render(mAdjustedPixelArea, first_pass);
上面显示上身。
#093 num_indices += mLowerBodyLOD.render(mAdjustedPixelArea, FALSE);
上面显示下半身。
#094
#095 {
#096 LLGLEnable blend(GL_BLEND);
#097 LLGLEnable test(GL_ALPHA_TEST);
#098 num_indices += renderTransparent();
上面调用函数renderTransparent显示头发、裙子。
#099 }
#100 }
这样分开显示的好处,就是可以显示各种各样的人物出来,多姿多彩,节省人物实现的数据下载,当然也是骨骼动画实现的需要。
- 第二人生的源码分析(十九)人物组合显示
- 蔡军生先生第二人生的源码分析(十九)人物组合显示
- 第二人生的源码分析(二十)显示人物名称
- 第二人生的源码分析(十七)人物Mesh数据显示的实现
- 第二人生的源码分析(十八)人物纹理显示的实现
- 第二人生的源码分析(二十一)显示人物名称的字体
- 第二人生的源码分析(二十二)调用OpenGL显示人物名称的函数
- 蔡军生先生第二人生的源码分析(十七)人物Mesh数据显示的实现
- 蔡军生先生第二人生的源码分析(十八)人物纹理显示的实现
- 蔡军生先生第二人生的源码分析(二十一)显示人物名称的字体
- 蔡军生先生第二人生的源码分析(二十二)调用OpenGL显示人物名称的函数
- 蔡军生先生第二人生的源码分析(二十)显示人物名称
- 第二人生的源码分析(十四)人物角色的实现
- 第二人生的源码分析(二十九)Windows网络初始化
- 第二人生的源码分析(十六)保存人物角色的XML文件
- 第二人生的源码分析(二十三)人物行走的键盘消息处理
- 第二人生的源码分析(二十四)人物向前走的键盘消息处理
- 蔡军生先生第二人生的源码分析(十四)人物角色的实现
- 乱砍设计模式之十 -- COMMAND 模式
- 今天装机遇到的问题
- 静下心来学习
- java get传递方法传递参数时,参数用utf8编码的解决方法
- Windows CE开发常见问题解答(转载)
- 第二人生的源码分析(十九)人物组合显示
- NDS开发日志(六)
- 乱砍设计模式之十一 -- 其他
- 谁为信息产业的浪费买单?!
- java get传递方法传递参数时,参数用utf8编码的解决方法
- java get传递方法传递参数时,参数用utf8编码的解决方法
- 消息中间件及WebSphere MQ入门
- java get传递方法传递参数时,参数用utf8编码的解决方法
- MySQLdb如何判断数据库连接有效?