Interlocking Tile LOD算法演示(包括部分代码)

最近做的一个3D的LOD四叉树地形,众所周知,现有的知名LOD算法包括CLOD、ROAM等,但是这些算法普遍具有比较变态的特点就是每帧都必须要改变顶点的数据。对于Direct3D而言,锁存解存是不可避免的,虽然可以使用Dynamic存储器来提升锁存解存的速度,但是Dynamic渲染速度就比较慢。一句话,这些算法都不适于现在这种硬件的体系结构,即瓶颈在AGP存储器的体系结构,或者更加明确的说,就是瓶颈在锁存和解存的体系结构。

InterlockingTiles算法给出了一个比较简单的实现,这个算法的本质是,一开头就将Vertex数据填好,然后就不再动了,变动的只是Index数据。比如,刚开始以9X9为一个Tile,那么一个Tile的Vertex数据就是81个,怎么都不变。然后,9X9就有4级LOD:把9X9全画出来是一个,9X9隔一个点画,就是画5X5,是一个,然后是2X2和1X1。这样就可以为每一个LOD编制Index表。而对于不同LOD的联系,由于刚上来都知道是什么,也可以为连接部分编制Index表。

这样一开始,所有的Vertex和Index都将在最开始就被建立起来,不需要运行时锁存解存,顶点运算。

Gems2中对本算法有更多介绍,后面附有一部分代码,均使用了9X9Tile,17X17和33X33Tile均没有实现,可参考阅读。

Interlocking Tiles LOD部分的代码- -                                   

只是相关部分的代码,可以当作伪代码来读。

四叉树管理部分写得有点糟糕,所以还是不要看了,就看LOD部分就可以了。


  http://noslopforever.blogchina.com/inc/code.rar

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值