请选择 进入手机版 | 继续访问电脑版

开源计算机图形学社区(Open Source Computer Graphics Community) |OpenGPU Forum (2007-2013)| OpenGPU Project

 找回密码
 注册
搜索
查看: 2981|回复: 2

关于Win7 64位系统的不响应问题 [复制链接]

Rank: 12Rank: 12Rank: 12

注册时间
2010-7-6
积分
798
发表于 2014-2-10 14:35:32 |显示全部楼层
在Win7 64位的系统下,偶尔会在如下语句中不停循环造成窗口不响应,其他系统基本上无此问题。
while (pDxQuery->GetData((void *) &uiPixelsVisible, sizeof(DWORD), D3DGETDATA_FLUSH) == S_FALSE);
在不响应的情况下,如果按下 Ctrl+Alt+Del 启动任务管理器,窗口就会回复。(此操作可以看作是设备重置),但是如果是设备丢失了,GetData函数应该不会返回S_FALSE,而是应该返回D3DERR_DEVICELOST。
各位达人有没有碰到这样的问题?



sincrystal于2014-2-21 18:34补充以下内容:
:'(,没有人知道么?

Rank: 13Rank: 13Rank: 13Rank: 13

注册时间
2013-11-16
积分
1138
发表于 2014-2-23 22:49:05 |显示全部楼层
试试:
HRESULT hr;
do
{
hr = pDxQuery->GetData((void *) &uiPixelsVisible, sizeof(DWORD), D3DGETDATA_FLUSH);
if ( hr == D3DERR_DEVICELOST )
{
  INSERT_YOUR_BREAKPOINT_HERE;
}
while ( hr == S_FALSE );
}

此外,我想在循环内一直调用这个函数,是否欠妥?是否需要Sleep()几下再调用?

使用道具 举报

Rank: 12Rank: 12Rank: 12

注册时间
2010-7-6
积分
798
发表于 2014-2-23 23:05:05 |显示全部楼层
不行。
while (pDxQuery->GetData((void *) &uiPixelsVisible, sizeof(DWORD), D3DGETDATA_FLUSH) == S_FALSE);
是可以这么写的。查一下就会有大把大把的这样的范例,它的大概意思是,如果GPU没有处理完,就返回false,我们是需要等待的。
但是问题是已经加上了一个等待时间,还是会偶尔卡在GetData这个函数内,所以有点郁闷。


sincrystal于2014-3-2 20:08补充以下内容:
难道各位都没碰到过win7下面,渲染窗口不响应的问题么?唉~


sincrystal于2014-6-15 11:43补充以下内容:
此问题结贴,已经彻底解决。

使用道具 举报

最近看过此主题的会员

您需要登录后才可以回帖 登录 | 注册

‹‹
我的工具栏

关于我们|手机版|Archiver|开源计算机图形学社区(Open Source Computer Graphics Community) | OpenGPU Project | OpenGPU Forum (2007-2013)

GMT+8, 2017-2-26 20:14 , Processed in 0.056663 second(s), 11 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部