游戏开发论坛

 找回密码
 立即注册
搜索
楼主: tonykee

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

[复制链接]

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

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

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

60M不算什么的,我的每个Tile都是257x257个顶点,我的内存耗用始终都是80M左右,我的队列里面还驻留16个Tile呢。关键是看你怎么管理Tile的资源了,对了,我的整个高度图,以及alpha混合纹理,光照图,都是用程序物理上给split成了一个个的小图片,每个tile有自己的高度图,alpha混合纹理,以及光照图,至于细节纹理和粗纹理那都是共用的,占用的资源基本可以忽略掉
每个tile要动态加载的也就是这几部分内容:
1:顶点信息(包含高度图读入的信息了,Block分块,处理)
2:索引信息(Block 还要按级别划分,动态组织索引缓存,也包括接缝处理的索引缓存)
3:aplha混合纹理
4:光照图(可选,有自然光和光照图两种策略,光照图效果好,就是难做,目前还没有比较好的工具)
线程对Tile每次加载和释放的就这些信息。
当然Tile本身不必释放,里面还包含tile的索引位置,等等一些最基本的信息,大地图创建的时候就该创建所有的tile,包括基本信息,但不需要加载前面提到的4部分内容,只有那些是动态加载的。

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

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

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

版主大人难得一见啊
我现在还每去做服务器那块,不过IOCP的部分我曾经做过,将来我的服务器的IO架构里面最重要的一块一定是IOCP

4

主题

28

帖子

52

积分

注册会员

Rank: 2

积分
52
发表于 2007-6-14 10:34:00 | 显示全部楼层

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

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

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

15

主题

363

帖子

390

积分

中级会员

Rank: 3Rank: 3

积分
390
发表于 2007-6-15 08:41:00 | 显示全部楼层

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

恭喜。

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-6-15 19:55:00 | 显示全部楼层

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

noslopforever兄,真是难得一见啊。
我最近也少上来了,暂时放下所有的东西。
说到渲染就心虚,现在要潜心研究研究shader,现在都SM4.0了,我还在用FP,呵呵...
render方面做的太烂,入门都不够,打算恶补一阵子

51

主题

134

帖子

140

积分

注册会员

Rank: 2

积分
140
发表于 2007-9-25 00:57:00 | 显示全部楼层

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

请问楼主你的线程之间是如何通讯的?何时创建新的TILE,怎么知道下一个新建的TILE是哪个,如果一个线程还没结束又有新的TILE需要创建怎么办?
我现在也在搞这个,对多线程编程不大了解。。。
我现在的地形本身有5*5的TILE,渲染时候只渲染3*3,还有25个缓冲TILE列队,我是这样想的:
如果视点进入别的TILE中,将5*5的TILE 另存,计算下一次的5*5TILE位置,然后将另存TILE中可用的TILE返回5*5的TILE中,再查找缓冲中的TILE有没有可用的,弹出并放如5*5,将另存的TILE中剩下没有用的压入列队中,将列队前面对于的TILE的弹出并释放(不知道需不需要使用新的线程),最后搜索还缺哪些TILE,如果却的在3*3内那么返回错误,否则的话增加新的线程来新建TILE。可是如果这个线程还没有执行完成,视点所在TILE再次改变,我就不知道怎么办了。。。
本来想终止原来的线程,然后重新建立线程,可是听说终止后内存不能释放,而且万一顶点缓冲解锁到一半就强行终止,那就完蛋了。。。

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-9-25 01:06:00 | 显示全部楼层

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

要保证始终保证只有一个线程sleep一个间隔在那里空转,释放和创建队列里面的 tile

最近我在改进场景,不过不是地形,而是地形上的对象,树木,房子一切的一切。
也一并要实现动态加载,和剪裁。
还需要加入角色和碰撞检测。
好在也做的差不多了。

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-9-25 01:16:00 | 显示全部楼层

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

发个现在正在开发中的效果截图
sf_200792511536.jpg

5

主题

972

帖子

975

积分

高级会员

Rank: 4

积分
975
发表于 2007-9-25 02:12:00 | 显示全部楼层

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

楼主强淫

7

主题

82

帖子

110

积分

注册会员

Rank: 2

积分
110
QQ
发表于 2007-9-25 11:41:00 | 显示全部楼层

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

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

版主大人难得一见啊
我现在还每去做服务器那块,不过IOCP的部分我曾经做过,将来我的服务器的IO架构里面最重要的一块一定是IOCP


版主说的完成端口不是说去做网络

IOCP是一个IO模型,你在加载线程里读TILE数据的时候,也可以用IOCP,提交读请求,等待他完成后的通知
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-20 19:04

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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