游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4513|回复: 7

关于游戏中显存的管理,讨论

[复制链接]

9

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
发表于 2007-12-28 16:27:00 | 显示全部楼层 |阅读模式
最近碰到一个问题,我在游戏中运行时间长了,发现游戏很卡,后来通过程序查看,原来每当在我显存用完的时候就卡了(显存128M,AGP内存55M).后来看了一些资料,总结一下可能是这样导致我卡的,我在游戏中创建的资源大部分是D3DPOOL_MANAGED类型的,也有部分D3DPOOL_DEFAULT的.每当显卡用完128M显存,这时又需要加载新的资源时,D3D的资源管理器就会释放掉显存的东西到系统内存,我发现当释放的资源为20M以上时,我就很卡了.
 d3d里面有个函数EvictManagedResources可以释放显存里面的D3DPOOL_MANAGED资源,但释放一次也很卡,那有没有什么办法,可以不让显存一次释放那么多,而由我们自己来控制释放的资源数量呢?比如我一次只释放5M,那么就应该不会卡了,D3D里面有没有这种函数呢?

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
发表于 2007-12-28 20:58:00 | 显示全部楼层

Re:关于游戏中显存的管理,讨论

居然用尽了128M的现存,编的什么类型的游戏啊?是不是资源管理的有问题吧,每帧确实需要128M的资源嘛?

9

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
 楼主| 发表于 2007-12-29 09:00:00 | 显示全部楼层

Re:关于游戏中显存的管理,讨论

是这样的,我显示的每张地图,人物纹理,界面纹理.....反正所有的显示出来的东西都是用DPOOL_MANAGED类型的纹理,这样当显示的纹理很多时,就自然大于128M,但并不是每帧需要这么大的资源,但是上一帧显示完毕之后的纹理资源能清除吗?128M里面有很大部分是前面几十帧渲染的纹理,只是留在了显存而已,LZ有什么资源管理的好方法可以指教一下?

1

主题

6

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2007-12-29 16:18:00 | 显示全部楼层

Re:关于游戏中显存的管理,讨论

我认为MANAGED的资源是有D3D去调度决定,自然显存的利用算法也是由D3D去完成的,程序去干预也没啥意义。不过要避免对MNAGED资源频繁进行lock就是了,这样才会让显存完全discard掉,重新upload。

还有组织渲染顺序是很重要

201

主题

1437

帖子

1963

积分

金牌会员

Rank: 6Rank: 6

积分
1963
QQ
发表于 2008-1-1 15:28:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2008-1-2 21:08:00 | 显示全部楼层

Re: 关于游戏中显存的管理,讨论

xwq: 关于游戏中显存的管理,讨论

最近碰到一个问题,我在游戏中运行时间长了,发现游戏很卡,后来通过程序查看,原来每当在我显存用完的时候...

这个问题归根到底是显存用尽了,幸亏你用了 managed 方式,否则恐怕都无法渲染了,managed 方式并不是造成显存用尽的根本原因,真正的原因是你的程序没有对资源进行有效的管理,当显存不够时,调用 EvictManagedResources 会清除掉 d3d runtime 认为不需要使用的资源,但是如果这时清除的显存资源还需要在这一帧渲染的话,就会出现频繁的卸载、上传得情况,而这时需要经过总线进行传输,所以卡是必然的了。这种情况下你最好检查一下渲染资源的方式,不需要渲染的资源就不需要送入渲染管线。如果你的程序确实需要渲染这么多资源,而你还要控制进行精确的资源的卸载和上传,那就要自己代替 d3d 的资源管理,使用 default 方式创建资源,这样可以有更大的灵活性,不过自己管理资源要做很多工作,做得不好的话还不如让 d3d 帮你管理资源。

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2011-11-10 16:19:00 | 显示全部楼层

Re: 关于游戏中显存的管理,讨论

[em1]的私服呢分

9

主题

62

帖子

62

积分

注册会员

Rank: 2

积分
62
发表于 2011-11-10 16:46:00 | 显示全部楼层

Re:关于游戏中显存的管理,讨论

进来学习一下
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-8 19:24

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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