第二人生的源码分析(十七)人物Mesh数据显示的实现

前面介绍了怎么样读取人物的Mesh数据,那么你也许会想到,读取数据之后是怎么样显示出来的呢?并且显示出活生活现的人物来。现在就来分析第二生里怎么样显示人物Mesh数据,它的显示流程如下:

1、 LLAppViewer::mainLoop()  主线程的消息循环函数。

2、 display() 主要渲染函数。

3、 LLPipeline::renderGeom() 渲染管道显示函数。

4、 LLDrawPoolAvatar::render() 人物缓冲池渲染函数。

5、 LLDrawPoolAvatar::renderAvatars() 渲染所有人物。

6、 LLVOAvatar::renderSkinned() 每个人物渲染显示。

7、 LLVOAvatar::renderTransparent() 每个人物渲染透明部份数据。

8、 LLViewerJoint::render() 每个人物的每个部份渲染显示。

9、 LLViewerJointMesh::drawShape()  每个部份渲染外状。

10、   llDrawRangeElements()  这个函数渲染每个三角显示。

 

先看一下llDrawRangeElements()函数里怎么调用OPENGL函数来显示人物角色的Mesh数据,代码如下:

#001  void llDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices)

#002  {

#003       if (end-start+1 > (U32) gGLManager.mGLMaxVertexRange ||

#004              count > gGLManager.mGLMaxIndexRange)

#005       {

#006              glDrawElements(mode,count,type,indices);

#007       }

#008       else

#009       {

#010              glDrawRangeElements(mode,start,end,count,type,indices);

#011       }

#012  }

 

glDrawElementsOpenGL基本的图元显示函数,它的定义如下:

WINGDIAPI void APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);

mode是显示的方式,比如三角形、三角形列表等等。

count是图元的个数。

type是索引点的数据类型。

indices是索引数组。

 

glDrawRangeElementsOpenGL基本的图元显示函数扩展函数。它的定义如下:

GLAPI void APIENTRY glDrawRangeElements (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *);

这个函数跟上面函数的参数不同之处,就是可以设置索引数组里的起点位置和结束位置。

蔡军生  2008/01/17 QQ:9073204 深圳

 

 
Lora Mesh是一种基于LoRa无线通信技术的网络拓扑结构,它利用无线传感器节点间的多跳转发和消息转发来实现广域网覆盖。下面是Lora Mesh实现源码分析: 首先,Lora Mesh实现源码需要实现LoRa通信模块的初始化和配置。这包括设置无线通信频率、功率、扩频因子和信道带宽等参数。例如,可以通过调用LoRaWAN协议栈提供的函数来完成这些设置。 其次,源码需要实现节点之间的消息传递和转发功能。在Lora Mesh中,每个节点都可以是消息的发送方和接收方,节点之间通过无线多跳转发来实现消息的传递。源码需要实现接收消息的函数和发送消息的函数,当节点接收到消息时,将其转发给周围的邻居节点;当节点需要发送消息时,将消息传递给下一个跳节点,直到消息到达目标节点。 除此之外,源码还需要实现网络拓扑结构的管理。这包括节点的加入和离开,邻居节点的发现和节点之间的链路维护。在Lora Mesh中,每个节点都需要和周围的邻居节点建立连接,源码需要实现邻居节点之间的连接管理,以便实现消息的传递和转发。 最后,源码还需要实现节点的路由算法。在Lora Mesh中,每个节点使用路由算法来选择最优的路径传输消息。源码需要实现路由算法,以确保消息能够通过最短路径或者最低消耗的路径进行传输。 综上所述,Lora Mesh实现源码包括LoRa通信模块的初始化和配置、消息传递和转发功能、网络拓扑结构的管理以及节点的路由算法。这些源码实现可以根据具体的应用场景和需求进行调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

caimouse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值