游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3967|回复: 8

d3d9全屏后切换出去再换回来就一直卡着,怎么办?

[复制链接]

57

主题

139

帖子

141

积分

注册会员

Rank: 2

积分
141
发表于 2005-7-15 17:43:00 | 显示全部楼层 |阅读模式
d3d9全屏后切换出去再换回来就一直卡着,怎么办?
开任务管理器,CPU一直是100%
D3D9的例子也是这样
有哪位高人能告诉我解决之道

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2005-7-15 20:43:00 | 显示全部楼层

Re:d3d9全屏后切换出去再换回来就一直卡着,怎么办?

玩反恐时就是这样的,估计暂时还无法避免此类问题吧

29

主题

421

帖子

436

积分

中级会员

Rank: 3Rank: 3

积分
436
发表于 2005-7-15 21:07:00 | 显示全部楼层

Re:d3d9全屏后切换出去再换回来就一直卡着,怎么办?

从游戏切换到桌面,系统cpu是100%的话,是程序loop时候,是游戏程序内不论窗口是否激活都不停的暂停的原因。
在从桌面切换回游戏,游戏会卡的话,应该是代码问题了。很大可能是InvalidateDeviceObjects()或者RestoreDeviceObjects()有错误。
dx9的例子可能只有第一种现象,第二种现象有吗?不清楚。

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
发表于 2005-7-15 21:24:00 | 显示全部楼层

Re:d3d9全屏后切换出去再换回来就一直卡着,怎么办?

伪全屏吧

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2005-7-15 21:41:00 | 显示全部楼层

Re:d3d9全屏后切换出去再换回来就一直卡着,怎么办?

没释放资源就试图恢复全屏就会卡住~~

11

主题

123

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2005-7-17 00:55:00 | 显示全部楼层

Re: d3d9全屏后切换出去再换回来就一直卡着,怎么办?

答案很简单,DX设备丢失,在恢复全平后要重新设置DX设备,这是一个基础问题,看来这里都是入门级的朋友

42

主题

418

帖子

418

积分

中级会员

Rank: 3Rank: 3

积分
418
发表于 2005-7-17 14:27:00 | 显示全部楼层

Re: Re:d3d9全屏后切换出去再换回来就一直卡着,怎么办?

shenguhan: Re:d3d9全屏后切换出去再换回来就一直卡着,怎么办?

没释放资源就试图恢复全屏就会卡住~~

能说得详细些么

16

主题

404

帖子

404

积分

中级会员

Rank: 3Rank: 3

积分
404
发表于 2005-7-17 16:19:00 | 显示全部楼层

Re:d3d9全屏后切换出去再换回来就一直卡着,怎么办?

可能是D3D设备丢失,楼主可以在渲染函数里加入一个D3D设备的函数来检查是否设备丢失.
g_pD3DDEVICE->TestCooperativeLevel()
如果返回D3DERR_DEVICELOST则表示设备已经丢失不可能再渲染

关于这个函数的说明:

IDirect3DDevice9::TestCooperativeLevel Method

--------------------------------------------------------------------------------

Reports the current cooperative-level status of the Microsoft Direct3D device for a windowed or full-screen application.

Syntax

HRESULT TestCooperativeLevel(VOID);

Return Value

If the method succeeds, the return value is D3D_OK, indicating that the device is operational and the calling application can continue.


If the method fails, the return value can be one of the following values (see Remarks).

D3DERR_DEVICELOST: The device has been lost but cannot be reset at this time. Therefore, rendering is not possible.

D3DERR_DEVICENOTRESET: The device has been lost but can be reset at this time.

D3DERR_DRIVERINTERNALERROR: Internal driver error. Applications should generally shut down when receiving this error. For more information, see Driver Internal Errors.


38

主题

96

帖子

148

积分

注册会员

Rank: 2

积分
148
发表于 2005-7-17 18:30:00 | 显示全部楼层

Re:d3d9全屏后切换出去再换回来就一直卡着,怎么办?

是个比较难给出答案的问题。不一定在哪里会出现问题,
解决办法只有一个 : 调试程序 断定错误位置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-26 11:53

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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