游戏开发论坛

 找回密码
 立即注册
搜索
查看: 12072|回复: 29

客户端动态加载Tile的无限LOD地形终于实现了!欣慰啊...

[复制链接]

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2007-6-4 00:19:00 | 显示全部楼层 |阅读模式
经过我周末的努力,按照我之前的设想,客户端采用线程动态加载和释放Tile的无限LOD地形终于实现了我的机器配置AMD3600+ x2 ,主板集成 GF6150SE的显卡
能达到下面的成绩,自己非常的欣慰。
测试用的4096x4096的地图,不管地图多大内存占用始终也只有80M左右,而且地形漫游运行速度非常稳定,没有出现明显卡的现象,这两天的辛苦没有白费,这下子我的思路将更加开阔。
sf_20076401916.jpg

48

主题

142

帖子

142

积分

注册会员

Rank: 2

积分
142
发表于 2007-6-4 09:33:00 | 显示全部楼层

Re:客户端动态加载Tile的无限LOD地形终于实现了!欣慰啊...

羡慕
以你为荣
楼主有空帮我看看:
http://bbs.gameres.com/showthread.asp?threadid=84898
谢谢!

6

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
QQ
发表于 2007-6-4 12:00:00 | 显示全部楼层

Re: 客户端动态加载Tile的无限LOD地形终于实现了!欣慰啊...

羡慕!
我学D3D才刚开始.
楼主要写一下教材或经验才好啊.

0

主题

5

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2007-6-5 20:43:00 | 显示全部楼层

Re:客户端动态加载Tile的无限LOD地形终于实现了!欣慰啊...

祝贺成功,希望楼主早日能整理一下代码,出个教程什么的,毕竟terrain比较复杂,楼主是过来人,能为大家指点一下迷津!!!另外,能推荐一些学地形的资料吗?网上关于地形的大多是opengl的,帮帮忙吧,谢谢!!!

7

主题

74

帖子

74

积分

注册会员

Rank: 2

积分
74
发表于 2007-6-12 08:47:00 | 显示全部楼层

Re:客户端动态加载Tile的无限LOD地形终于实现了!欣慰啊...

辅助线程楼主设定的优先级是什么?
我的设置成normal后,画面会一卡一卡的。
设置低的话,检测就会出现滞后。好郁闷阿

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-6-12 10:34:00 | 显示全部楼层

Re: 客户端动态加载Tile的无限LOD地形终于实现了!欣慰啊...

可以看看我的控制台调试:

///////////////////////////////////////////////////////////////////////////
[07-06-12 10:26:52] GC线程扫描中...
  _9_7_tile    _9_8_tile    _9_9_tile    _6_9_tile    _7_9_tile    _8_9_tile
_6_6_tile    _6_7_tile    _6_8_tile    _7_6_tile    _7_7_tile    _7_8_tile    _8
_6_tile    _8_7_tile    _8_8_tile
-----------------------------
_6_6_tile _6_7_tile _6_8_tile
_7_6_tile _7_7_tile _7_8_tile
_8_6_tile _8_7_tile _8_8_tile
[07-06-12 10:26:53] Terrain::WorkThreadCallBackMothod线程扫描中...
  _9_7_tile    _9_8_tile    _9_9_tile    _6_9_tile    _7_9_tile    _8_9_tile
_6_6_tile    _6_7_tile    _6_8_tile    _7_6_tile    _7_7_tile    _7_8_tile    _8
_6_tile    _8_7_tile    _8_8_tile
-----------------------------
_6_6_tile _6_7_tile _6_8_tile
_7_6_tile _7_7_tile _7_8_tile
_8_6_tile _8_7_tile _8_8_tile
[07-06-12 10:26:54] Terrain::WorkThreadCallBackMothod线程扫描中...
[07-06-12 10:26:55] Entity::Entity:创建节点boxes_res
[07-06-12 10:26:55] Entity::Entity:创建节点block_array_res
[07-06-12 10:26:55] Entity::Entity:创建节点_blocks
创建::::::::::::::::_5_6_tile
[07-06-12 10:26:55] Entity::Entity:创建节点boxes_res
[07-06-12 10:26:55] Entity::Entity:创建节点block_array_res
[07-06-12 10:26:55] Entity::Entity:创建节点_blocks
创建::::::::::::::::_5_7_tile
移除:::::::::::::::::::_9_7_tile
[07-06-12 10:26:56] Entity::Entity:创建节点boxes_res
[07-06-12 10:26:56] Entity::Entity:创建节点block_array_res
[07-06-12 10:26:56] Entity::Entity:创建节点_blocks
创建::::::::::::::::_5_8_tile
移除:::::::::::::::::::_9_8_tile
  _9_9_tile    _6_9_tile    _7_9_tile    _8_9_tile    _8_6_tile    _8_7_tile
_8_8_tile    _5_6_tile    _5_7_tile    _5_8_tile    _6_6_tile    _6_7_tile    _6
_8_tile    _7_6_tile    _7_7_tile    _7_8_tile
-----------------------------
_5_6_tile _5_7_tile _5_8_tile
_6_6_tile _6_7_tile _6_8_tile
_7_6_tile _7_7_tile _7_8_tile
[07-06-12 10:26:56] Terrain::WorkThreadCallBackMothod线程扫描中...
  _9_9_tile    _6_9_tile    _7_9_tile    _8_9_tile    _8_6_tile    _8_7_tile
_8_8_tile    _5_6_tile    _5_7_tile    _5_8_tile    _6_6_tile    _6_7_tile    _6
_8_tile    _7_6_tile    _7_7_tile    _7_8_tile
-----------------------------
_5_6_tile _5_7_tile _5_8_tile
_6_6_tile _6_7_tile _6_8_tile
_7_6_tile _7_7_tile _7_8_tile
[07-06-12 10:26:57] Terrain::WorkThreadCallBackMothod线程扫描中...
[07-06-12 10:26:57] GC线程扫描中...
  _9_9_tile    _6_9_tile    _7_9_tile    _8_9_tile    _8_6_tile    _8_7_tile
_8_8_tile    _5_6_tile    _5_7_tile    _5_8_tile    _6_6_tile    _6_7_tile    _6
_8_tile    _7_6_tile    _7_7_tile    _7_8_tile
////////////////////////////////////////////////////////////////////////////


注:以上是我的一段调试代码,

_5_6_tile _5_7_tile _5_8_tile
_6_6_tile _6_7_tile _6_8_tile
_7_6_tile _7_7_tile _7_8_tile
表示角色在6_7这个tile里面,周围有另外的8个tile


  _9_9_tile    _6_9_tile    _7_9_tile    _8_9_tile    _8_6_tile    _8_7_tile
_8_8_tile    _5_6_tile    _5_7_tile    _5_8_tile    _6_6_tile    _6_7_tile    _6_8_tile    _7_6_tile    _7_7_tile    _7_8_tile
表示,现在内存里面驻留的tile队列,可以看的出,角色和身边9个tile在队列的末端
下一个要出队列的将是  _9_9_tile
其实用的就是队列+线程扫描的机制,一个最简单有效的动态资源队列管理模型,优先级我用的默认的,并没有去设定它,效果还过的去。

7

主题

74

帖子

74

积分

注册会员

Rank: 2

积分
74
发表于 2007-6-12 14:41:00 | 显示全部楼层

Re:客户端动态加载Tile的无限LOD地形终于实现了!欣慰啊...

多谢了。

基本上搞定了。

7

主题

74

帖子

74

积分

注册会员

Rank: 2

积分
74
发表于 2007-6-12 14:46:00 | 显示全部楼层

Re:客户端动态加载Tile的无限LOD地形终于实现了!欣慰啊...

还有一个问题,就是有关漫游的。

由于单个的title我们都是单独处理的。

那么在漫游的时候,我们就需要检测现在视点的位置,然后根据视点所在的title来设定视点的高度。不过这样一来,又得写一个检测,楼主有什么好方法。

另外就是有关内存的问题。

内存消耗太大了。即使每个title都是129的,消耗的内存也是很大的,9个title,每个129*129,内存竟然有40-50m至多,但是单独读取一张2049*2049的高度图绘制地形,也不过20m。

1

主题

5

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2007-6-12 16:24:00 | 显示全部楼层

Re: 客户端动态加载Tile的无限LOD地形终于实现了!欣慰啊...

楼主能不能把源代码贴上来啊? [em3]

90

主题

797

帖子

833

积分

高级会员

论坛版主

Rank: 4

积分
833
QQ
发表于 2007-6-12 17:17:00 | 显示全部楼层

Re:客户端动态加载Tile的无限LOD地形终于实现了!欣慰啊...

给LZ提个小tip,读取资源的时候不如用上完成端口,可以加快读取速度,其实效率都耗费在IO上。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-20 18:21

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表