游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: xwq

在DX9中用什么函数可以查看显存? 急 急 急..

[复制链接]

8

主题

390

帖子

390

积分

中级会员

Rank: 3Rank: 3

积分
390
发表于 2007-12-21 16:53:00 | 显示全部楼层

Re:在DX9中用什么函数可以查看显存? 急 急 急.

ddraw接口在创建d3d设备时获取。然后隔一定时间进行显存查询GetAvailableVidMem,并用图表显示。

//这个查系统内存
MEMORYSTATUSEX SysMemInfo;
ZeroMemory(&SysMemInfo, sizeof(SysMemInfo));
SysMemInfo.dwLength=sizeof(SysMemInfo);
if(0!=GlobalMemoryStatusEx(&SysMemInfo))
{
gTotalPhyRam=(FLOAT)SysMemInfo.ullTotalPhys/1048576.0f;
gUsedPhyRam=(FLOAT)(SysMemInfo.ullTotalPhys - SysMemInfo.ullAvailPhys) / 1048576.0f;
gTotalPageFile=(FLOAT)SysMemInfo.ullTotalPageFile/1048576.0f;
gUsedPageFile=(FLOAT)(SysMemInfo.ullTotalPageFile - SysMemInfo.ullAvailPageFile) / 1048576.0f;
}

8

主题

390

帖子

390

积分

中级会员

Rank: 3Rank: 3

积分
390
发表于 2007-12-21 17:01:00 | 显示全部楼层

Re:在DX9中用什么函数可以查看显存? 急 急 急.

一种可行的做法是,对于静态资源完全不用managed的资源,全部default,对于设备丢失,自己再重新加载整个地图(谁让他把设备都搞丢呢。。。)。
程序一启动,查询local显存数量,查询agp内存数量。然后程序执行时根据当前玩家这个显存的情况,进行资源合理管理,比如显卡烂,那texture就都搞256×256,如果显存多,给他来1024×1024,而对于硬盘中存储是纹理全部存储n个mipmap,也就是假设dxt压缩 2048×2048-1024×1024-一直到-4×4,全部存储起来,这样程序执行就不需要什么解码,或者插值之类的操作,而且能适于玩家多种机器配置。。。。扯远了。。。

9

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
 楼主| 发表于 2007-12-26 08:35:00 | 显示全部楼层

Re:在DX9中用什么函数可以查看显存? 急 急 急.

非常感谢ReallyBigBug, 我照你的方法做了,发现是我的物理内存急速增加,但奇怪的是,这种情况只是出现在个别的ATI的显卡上面,不知道为什么?

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2007-12-26 10:59:00 | 显示全部楼层

Re: Re:在DX9中用什么函数可以查看显存? 急 急 

xwq: Re:在DX9中用什么函数可以查看显存? 急 急 急.......

非常感谢ReallyBigBug, 我照你的方法做了,发现是我的物理内存急速增加,但奇怪的是,这种情况只是出现在个别的ATI的显卡上面,不知道为什么?

我说一下我的观点,不一定正确,如果这里有 ATI 的员工,恳请指正.现代的图形显卡一般都会有虚拟显存技术,nv 和 ati 都有自己的技术实现方法,也许你遇到的就是这个原因引起的。另外,你可以试试全部创建为 default 资源,还有你的资源是否是 dynamic 的,这也很重要,在创建 d3d 资源时,不同的指示参数会影响 d3d runtime 对资源的管理行为。

8

主题

390

帖子

390

积分

中级会员

Rank: 3Rank: 3

积分
390
发表于 2007-12-26 13:36:00 | 显示全部楼层

Re:在DX9中用什么函数可以查看显存? 急 急 急.

我以前在nvidia的某一卡上也遇到类似问题,结果错误是在我dp调用是index越界了,你尽量打开dx的所有debug信息,然后在vc调试时看dx的提示信息。

9

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
 楼主| 发表于 2007-12-26 15:52:00 | 显示全部楼层

Re:在DX9中用什么函数可以查看显存? 急 急 急.

ReallyBigBug说"dp调用时index越界",可不可以说的详细点,具体在什么情况下会这样?
另外,我现在做的是个大游戏,大概有60M用了D3DPOOL_DEFAULT资源,,其他的大概200M都是D3DPOOL_MANAGED的

8

主题

390

帖子

390

积分

中级会员

Rank: 3Rank: 3

积分
390
发表于 2007-12-27 13:41:00 | 显示全部楼层

Re:在DX9中用什么函数可以查看显存? 急 急 急.

呵呵,你自己慢慢调试吧,应该是哪里错了,。。。index值为6,而vb只有3个顶点,那就越界了。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-18 07:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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