成就中心 DouJin Terraria! 社区服务 统计排行 帮助
  • 4687阅读
  • 1回复

[心得交流][D3D][怪异现象求解]多线程与设备丢失的那点事

发帖
13
信仰
0
蓝点
5
符卡
0
首先,处理设备丢失的方法是调用TestCooperativeLevel()检测设备状态,如果返回了D3DERR_DEVICENOTRESET就可以按照如下步骤进行设备重置:
1、回收所有的D3DPOOL_DEFAULT资源和ID3DX资源
2、pDevice->Reset(&d3dpp);
3、重新设置所有的矩阵变换以及RenderState那些东西,重建所有需要的资源。


然后问题来了……


当GUI和D3D处于同一线程的时候,这么做各种完美。
但是当GUI和D3D分别处于不同线程的时候……全屏的D3D程序如果用Alt+Tab切换出去的话,就会瞬间(?)切换回全屏,如果是用WinKEY切换出去的话……程序会无限地切出换回……(要尝试这个的话……先给程序里加上定时自动结束的代码吧……)


于是求解此现象的原理……


顺便:GUI和D3D放在不同的线程是为了不让GUI事件妨碍到D3D的帧数……但是现在又是这么个情况……囧
Your brain has two parts:the left & the right.Your left brain has nothing right, and your right brain has nothing left.
诶?

Me.SetState("填坑");
发帖
59
信仰
0
蓝点
17
符卡
0
只看该作者 沙发  发表于: 2012-08-19
没弄过,试试openGPU和gamedev问问.
描述
快速回复

您目前还是游客,请 登录注册
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
认证码: